rm(list=ls(all=TRUE))
load("~/Post-doc/Data/Total Merged Data File (July 11 2022).RData")
Data for mean velocity, angular velocity, turn and heading angles each will be analyzed by a mixed model ANCOVA with chemical concentration, and light as fixed (treatment) effects, flow velocity as the co-variate and replicate as a random (blocking affect) with individual paths as the unit of analysis.
```r
```r
library(WRS2)
Error in is.nan(CC.TotalData) :
default method not implemented for type 'list'
Stats on each level
```r
legend(\topright\, # Add legend to density
legend = c(\Flow rate 0\, \Flow rate 0.6\),#, \Flow rate 3\, \Flow rate 5.9\, \Flow rate 8.9\),
col = c(\blue\, \light blue\),#, \yellow\, \orange\, \red\),
lty = 1)
<!-- rnb-source-end -->
<!-- rnb-output-begin eyJkYXRhIjoiRXJyb3IgaW4gc3Ryd2lkdGgobGVnZW5kLCB1bml0cyA9IFxcdXNlclxcLCBjZXggPSBjZXgsIGZvbnQgPSB0ZXh0LmZvbnQpIDogXG4gIHBsb3QubmV3IGhhcyBub3QgYmVlbiBjYWxsZWQgeWV0XG4ifQ== -->
Error in strwidth(legend, units = , cex = cex, font = text.font) : plot.new has not been called yet
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
#################################################################################
Kernel Density Plots
##################################################################################
Turn Angles first...
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxucm0oa2QxLCBrZDIsIGtkMywga2Q0LCBrZDUsIGtkNiwga2Q3LCBrZDgpXG5cbiMjIyBLZXJuZWwgZGVuc2l0eSBwbG90cyAjIyMjIyMjIyMjIyMjIyMjIyMjIFR1cm4gQW5nbGVzXG5wYXIobWFyPSBjKDQsNCwyLDEpKVxucGFyKG1mcm93PWMoMiwyKSlcblxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRmxvdyBSYXRlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xubGV2ZWxzKENDLlRvdGFsRGF0YSRGbG93LnJhdGUpXG5gYGAifQ== -->
```r
rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8)
### Kernel density plots ################### Turn Angles
par(mar= c(4,4,2,1))
par(mfrow=c(2,2))
################################ Flow Rate ########################
levels(CC.TotalData$Flow.rate)
[1] "0" "0.6" "3" "5.9" "8.9"
kd1 <- density(l1$turn.angle[l1$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.030), col='blue', lwd=2, main = "Turn Angles Vs Flow Rate, (all data no light var), Lights On")
kd2 <- density(l1$turn.angle[l1$Flow.rate=="0.6"])
lines(kd2, col='light blue', lwd=2)
kd3 <- density(l1$turn.angle[l1$Flow.rate=="3"])
lines(kd3, col='yellow', lwd=2)
kd4 <- density(l1$turn.angle[l1$Flow.rate=="5.9"])
lines(kd4, col='orange', lwd=2)
kd5 <- density(l1$turn.angle[l1$Flow.rate=="8.9"])
lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
################################ Chlorophyll ########################
levels(CC.TotalData$Chlorophyll)
[1] "0" "4.3" "4.6" "5.5" "6.1" "7.6" "13.5" "19"
kd1 <- density(l1$turn.angle[l1$Chlorophyll=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.030), col='blue', lwd=2, main = "Turn Angles Vs Chlorophyll, Lights On")
kd2 <- density(l1$turn.angle[l1$Chlorophyll=="4.3"])
lines(kd2, col='light blue', lwd=2)
kd3 <- density(l1$turn.angle[l1$Chlorophyll=="4.6"])
lines(kd3, col='yellow', lwd=2)
kd8 <- density(l1$turn.angle[l1$Chlorophyll=="5.5"])
lines(kd8, col='orange', lwd=2)
kd4 <- density(l1$turn.angle[l1$Chlorophyll=="6.1"])
lines(kd4, col='red', lwd=2)
kd5 <- density(l1$turn.angle[l1$Chlorophyll=="7.6"])
lines(kd5, col='dark red', lwd=2)
kd6 <- density(l1$turn.angle[l1$Chlorophyll=="13.5"])
lines(kd6, col='purple', lwd=2)
kd7 <- density(l1$turn.angle[l1$Chlorophyll=="19"])
lines(kd7, col='black', lwd=2)
legend("topright", # Add legend to density
legend = c("Chlorophyll 0", "Chlorophyll 4.3", "Chlorophyll 4.6", "Chlorophyll 5.5", "Chlorophyll 6.1",
"Chlorophyll 7.6", "Chlorophyll 13.5", 'Chlorophyll 19'),
col = c("blue", "light blue", "yellow", "orange", "red", "dark red", "purple", "black"),
lty = 1)
################################ Guano ########################
levels(CC.TotalData$Guano)
[1] "Absent" "Present"
kd1 <- density(l1$turn.angle[l1$Guano=="Present"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.030), col='blue', lwd=2, main = "Turn Angles Vs Guano, Lights On")
kd2 <- density(l1$turn.angle[l1$Guano=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Guano Present", "Guano Absent"),
col = c("blue", "red"),
lty = 1)
################################ Light ########################
levels(CC.TotalData$Light)
[1] "Absent" "Present"
kd1 <- density(l1$turn.angle[l1$Light=="Present"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.030), col='blue', lwd=2, main = "Turn Angles Vs Light")
kd2 <- density(l0$turn.angle[l0$Light=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)

Now looking at velocity in relation to flow instead….
### Kernel density plots ################### Swimming velocity
par(mar= c(4,4,2,1))
par(mfrow=c(2,2))
#range(CC.TotalData$vel.flow)
#plot(CC.TotalData$vel.flow)
CC.TotalData$log.vel.flow <- log10(CC.TotalData$vel.flow)
Warning: NaNs produced
#str(CC.TotalData)
################################ Flow Rate ########################
levels(CC.TotalData$Flow.rate)
[1] "0" "0.6" "3" "5.9" "8.9"
kd1 <- density(log10(l1$vel.flow[l1$Flow.rate=="0"]))
Warning in density(log10(l1$vel.flow[l1$Flow.rate == "0"])) :
NaNs produced
Error in density.default(log10(l1$vel.flow[l1$Flow.rate == "0"])) :
'x' contains missing values
Now for headings…..
rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8)
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd2' not found
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd3' not found
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd4' not found
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd5' not found
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd7' not found
Warning in rm(kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8) :
object 'kd8' not found
Now for pitch….
### Kernel density plots ################### Pitch
par(mar= c(4,4,2,1))
par(mfrow=c(2,2))
CC.TotalData$pitch.perfect <- CC.TotalData$pitch/(2*pi)*360
################################ Flow Rate ########################
levels(CC.TotalData$Flow.rate)
[1] "0" "0.6" "3" "5.9" "8.9"
kd1 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Flow.rate=="0"])
plot(kd1, xlim = c(-90,90), ylim = c(0, 0.06), col='blue', lwd=2, main = "Pitch Vs Flow Rate")
kd2 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Flow.rate=="0.6"])
lines(kd2, col='light blue', lwd=2)
kd3 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Flow.rate=="3"])
lines(kd3, col='yellow', lwd=2)
kd4 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Flow.rate=="5.9"])
lines(kd4, col='orange', lwd=2)
kd5 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Flow.rate=="8.9"])
lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
################################ Chlorophyll ########################
levels(CC.TotalData$Chlorophyll)
[1] "0" "4.3" "4.6" "5.5" "6.1" "7.6" "13.5" "19"
kd1 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="0"])
plot(kd1, xlim = c(-90,90), ylim = c(0, 0.06), col='blue', lwd=2, main = "Pitch Vs Chlorophyll")
kd2 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="4.3"])
lines(kd2, col='light blue', lwd=2)
kd3 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="4.6"])
lines(kd3, col='yellow', lwd=2)
kd8 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="5.5"])
lines(kd8, col='orange', lwd=2)
kd4 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="6.1"])
lines(kd4, col='red', lwd=2)
kd5 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="7.6"])
lines(kd5, col='dark red', lwd=2)
kd6 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="13.5"])
lines(kd6, col='purple', lwd=2)
kd7 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Chlorophyll=="19"])
lines(kd7, col='black', lwd=2)
legend("topright", # Add legend to density
legend = c("Chlorophyll 0", "Chlorophyll 4.3", "Chlorophyll 4.6", "Chlorophyll 5.5", "Chlorophyll 6.1", "Chlorophyll 7.6", "Chlorophyll 13.5", 'Chlorophyll 19'),
col = c("blue", "light blue", "yellow", "orange", "red", "dark red", "purple", "black"),
lty = 1)
################################ Guano ########################
levels(CC.TotalData$Guano)
[1] "Absent" "Present"
kd1 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Guano=="Present"])
plot(kd1, xlim = c(-90,90), ylim = c(0, 0.06), col='blue', lwd=2, main = "Pitch Vs Guano")
kd2 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Guano=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Guano Present", "Guano Absent"),
col = c("blue", "red"),
lty = 1)
################################ Light ########################
levels(CC.TotalData$Light)
[1] "Absent" "Present"
kd1 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Light=="Present"])
plot(kd1, xlim = c(-90,90), ylim = c(0, 0.06), col='blue', lwd=2, main = "Pitch Vs Light")
kd2 <- density(CC.TotalData$pitch.perfect[CC.TotalData$Light=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
For each level of Flow
For each level of Chlorophyll
### Kernel density plots ################### Turn Angles
par(mar= c(4,4,2,1))
par(mfrow=c(3,3))
################################ Flow Rate ########################
levels(CC.TotalData$Flow.rate)
[1] "0" "0.6" "3" "5.9" "8.9"
kd1 <- density(ChlA0$turn.angle[ChlA0$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 0")
kd2 <- density(ChlA0$turn.angle[ChlA0$Flow.rate=="0.6"])
lines(kd2, col='light blue', lwd=2)
kd3 <- density(ChlA0$turn.angle[ChlA0$Flow.rate=="3"])
lines(kd3, col='yellow', lwd=2)
kd4 <- density(ChlA0$turn.angle[ChlA0$Flow.rate=="5.9"])
lines(kd4, col='orange', lwd=2)
kd5 <- density(ChlA0$turn.angle[ChlA0$Flow.rate=="8.9"])
lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
##kd1 <- density(ChlA4.3$turn.angle[ChlA4.3$Flow.rate=="0"])
##plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 4.3")
kd2 <- density(ChlA4.3$turn.angle[ChlA4.3$Flow.rate=="0.6"])
plot(kd2, xlim = c(5,175), ylim = c(0, 0.02), col='light blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 4.3")
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA4.3$turn.angle[ChlA4.3$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA4.3$turn.angle[ChlA4.3$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA4.3$turn.angle[ChlA4.3$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
kd1 <- density(ChlA4.6$turn.angle[ChlA4.6$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 4.6")
kd2 <- density(ChlA4.6$turn.angle[ChlA4.6$Flow.rate=="0.6"])
##plot(kd2, xlim = c(5,175), ylim = c(0, 0.02), col='light blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 4.6")
lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA4.6$turn.angle[ChlA4.6$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA4.6$turn.angle[ChlA4.6$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA4.6$turn.angle[ChlA4.6$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
kd1 <- density(ChlA5.5$turn.angle[ChlA5.5$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 5.5")
##kd2 <- density(ChlA5.5$turn.angle[ChlA5.5$Flow.rate=="0.6"])
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA5.5$turn.angle[ChlA5.5$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA5.5$turn.angle[ChlA5.5$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA5.5$turn.angle[ChlA5.5$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
##kd1 <- density(ChlA6$turn.angle[ChlA6$Flow.rate=="0"])
##plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 6")
kd2 <- density(ChlA6$turn.angle[ChlA6$Flow.rate=="0.6"])
plot(kd2, xlim = c(5,175), ylim = c(0, 0.02), col='light blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 6")
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA6$turn.angle[ChlA6$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA6$turn.angle[ChlA6$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA6$turn.angle[ChlA6$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
kd1 <- density(ChlA7$turn.angle[ChlA7$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 7")
##kd2 <- density(ChlA7$turn.angle[ChlA7$Flow.rate=="0.6"])
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA7$turn.angle[ChlA7$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA7$turn.angle[ChlA7$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA7$turn.angle[ChlA7$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
##kd1 <- density(ChlA13$turn.angle[ChlA13$Flow.rate=="0"])
##plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 13")
kd2 <- density(ChlA13$turn.angle[ChlA13$Flow.rate=="0.6"])
plot(kd2, xlim = c(5,175), ylim = c(0, 0.02), col='light blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 13")
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA13$turn.angle[ChlA13$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA13$turn.angle[ChlA13$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA13$turn.angle[ChlA13$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
kd1 <- density(ChlA19$turn.angle[ChlA19$Flow.rate=="0"])
plot(kd1, xlim = c(5,175), ylim = c(0, 0.02), col='blue', lwd=2, main = "Turn Angle Vs Flow Rate, Chlorophyll = 19")
##kd2 <- density(ChlA19$turn.angle[ChlA19$Flow.rate=="0.6"])
##lines(kd2, col='light blue', lwd=2)
##kd3 <- density(ChlA19$turn.angle[ChlA19$Flow.rate=="3"])
##lines(kd3, col='yellow', lwd=2)
##kd4 <- density(ChlA19$turn.angle[ChlA19$Flow.rate=="5.9"])
##lines(kd4, col='orange', lwd=2)
##kd5 <- density(ChlA19$turn.angle[ChlA19$Flow.rate=="8.9"])
##lines(kd5, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Flow rate 0", "Flow rate 0.6", "Flow rate 3", "Flow rate 5.9", "Flow rate 8.9"),
col = c("blue", "light blue", "yellow", "orange", "red"),
lty = 1)
###########################################################################
############################# Light ######################################
###########################################################################
par(mar= c(4,4,2,1))
par(mfrow=c(3,3))
kd1 <- density(ChlA0$turn.angle[ChlA0$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 0")
kd2 <- density(ChlA0$turn.angle[ChlA0$Light=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA4.3$turn.angle[ChlA4.3$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 4.3")
##kd2 <- density(ChlA4.3$turn.angle[ChlA4.3$Light=="Absent"])
##lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA4.6$turn.angle[ChlA4.6$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 4.6")
##kd2 <- density(ChlA4.6$turn.angle[ChlA4.6$Light=="Absent"])
##lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA5.5$turn.angle[ChlA5.5$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 5.5")
##kd2 <- density(ChlA5.5$turn.angle[ChlA5.5$Light=="Absent"])
##lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA6$turn.angle[ChlA6$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 6")
##kd2 <- density(ChlA6$turn.angle[ChlA6$Light=="Absent"])
##lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA7$turn.angle[ChlA7$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 7")
kd2 <- density(ChlA7$turn.angle[ChlA7$Light=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA13$turn.angle[ChlA13$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 13")
##kd2 <- density(ChlA13$turn.angle[ChlA13$Light=="Absent"])
##lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
kd1 <- density(ChlA19$turn.angle[ChlA19$Light=="Present"])
plot(kd1,xlim = c(5,175), ylim = c(0, 0.025), col='blue', lwd=2, main = "Turn Angles Vs Light, Chlorophyll = 19")
kd2 <- density(ChlA19$turn.angle[ChlA19$Light=="Absent"])
lines(kd2, col='red', lwd=2)
legend("topright", # Add legend to density
legend = c("Light Present", "Light Absent"),
col = c("blue", "red"),
lty = 1)
For each level of Flow (now for velocity)
### Kernel density plots ################### Velocity
par(mar= c(4,4,2,1))
par(mfrow=c(3,2))
################################ Chlorophyll ########################
kd1 <- density(log10(f0$vel.flow[f0$Chlorophyll=="0"]))
Warning in density(log10(f0$vel.flow[f0$Chlorophyll == "0"])) :
NaNs produced
Error in density.default(log10(f0$vel.flow[f0$Chlorophyll == "0"])) :
'x' contains missing values
For each level of Chlorophyll (velocity)
### Kernel density plots ################### velocity
par(mar= c(4,4,2,1))
par(mfrow=c(3,3))
################################ Flow Rate ########################
kd1 <- density(log10(ChlA0$vel.flow[ChlA0$Flow.rate=="0"]))
Warning in density(log10(ChlA0$vel.flow[ChlA0$Flow.rate == "0"])) :
NaNs produced
Error in density.default(log10(ChlA0$vel.flow[ChlA0$Flow.rate == "0"])) :
'x' contains missing values
Now for each level of Flow (for headings)
median(f0$heading.pi[f0$Chlorophyll=="0"])
[1] 0
Now for each level of Chlorophyll (for headings)

LS0tDQp0aXRsZTogIm5vdGVib29rMDkgLSBTdGF0aXN0aWNhbCBBbmFseXNpcyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyfQ0Kcm0obGlzdD1scyhhbGw9VFJVRSkpDQpsb2FkKCJ+L1Bvc3QtZG9jL0RhdGEvVG90YWwgTWVyZ2VkIERhdGEgRmlsZSAoSnVseSAxMSAyMDIyKS5SRGF0YSIpDQpgYGANCg0KRGF0YSBmb3IgbWVhbiB2ZWxvY2l0eSwgYW5ndWxhciB2ZWxvY2l0eSwgdHVybiBhbmQgaGVhZGluZyBhbmdsZXMgZWFjaCB3aWxsIGJlIGFuYWx5emVkIGJ5IGEgbWl4ZWQgbW9kZWwgQU5DT1ZBIHdpdGggY2hlbWljYWwgY29uY2VudHJhdGlvbiwgYW5kIGxpZ2h0IGFzIGZpeGVkICh0cmVhdG1lbnQpIGVmZmVjdHMsIGZsb3cgdmVsb2NpdHkgYXMgdGhlIGNvLXZhcmlhdGUgYW5kIHJlcGxpY2F0ZSBhcyBhIHJhbmRvbSAoYmxvY2tpbmcgYWZmZWN0KSB3aXRoIGluZGl2aWR1YWwgcGF0aHMgYXMgdGhlIHVuaXQgb2YgYW5hbHlzaXMuDQoNCmBgYHtyfQ0KDQojI1RvIHJ1biBBTkNPVkEgaW4gUiBsb2FkIHRoZSBmb2xsb3dpbmcgcGFja2FnZXM6DQpsaWJyYXJ5KGNhcikNCmxpYnJhcnkoY29tcHV0ZS5lcykNCmxpYnJhcnkoZWZmZWN0cykNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkobXVsdGNvbXApDQpsaWJyYXJ5KHBhc3RlY3MpDQpsaWJyYXJ5KFdSUzIpDQoNCiMjSWYgeW91IGFyZSB1c2luZyBsbSBvciBhb3YgbWFrZSBzdXJlIHRoYXQgeW91IHNldCB0aGUgY29udHJhc3RzIHVzaW5nIHRoZSAiY29udHJhc3RzIiBmdW5jdGlvbiBiZWZvcmUgZG9pbmcgZWl0aGVyIGFvdiBvciBsbS4gUiB1c2VzIG5vbi1vcnRob2dvbmFsIGNvbnRyYXN0cyBieSBkZWZhdWx0IHdoaWNoIGNhbiBtZXNzIGV2ZXJ5dGhpbmcgdXAgaW4gYW4gQU5DT1ZBLiBJZiB5b3Ugd2FudCB0byBzZXQgb3J0aG9nb25hbCBjb250cmFzdHMgdXNlOg0KDQpjb250cmFzdHMoZGF0YW5hbWUkZmFjdG9ydmFyaWFibGUpPWNvbnRyLnBvbHkoKSMgb2YgbGV2ZWxzLCBpLmUuIDMpICMjZXhhbXBsZQ0KY29udHJhc3RzKENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCk9Y29udHIucG9seSg3KQ0KIyN0aGVuIHJ1biB5b3VyIG1vZGVsIGFzDQoNCm1vZGVsLjE9YW92KGR2fmNvdmFyaWF0ZStmYWN0b3J2YXJpYWJsZSwgZGF0YT1kYXRhbmFtZSkgIyMgZXhhbXBsZQ0KbW9kMT1hb3YodmVsLmZsb3d+Rmxvdy5yYXRlK0NobG9yb3BoeWxsLCBkYXRhPUNDLlRvdGFsRGF0YSkNCiMjVG8gdmlldyB0aGUgbW9kZWwgdXNlOg0KDQpBbm92YShtb2RlbC4xLCB0eXBlPSJJSUkiKSAjIyBleGFtcGxlDQpBbm92YShtb2QxLCB0eXBlPSJJSUkiKQ0KIyNNYWtlIHN1cmUgeW91IHVzZSBjYXBpdGFsICJBIiBBbm92YSBoZXJlIGFuZCBub3QgYW5vdmEuIFRoaXMgd2lsbCBnaXZlIHJlc3VsdHMgdXNpbmcgdHlwZSBJSUkgU1MuDQoNCnN1bW1hcnkubG0obW9kZWwuMSkgIyN3aWxsIGdpdmUgYW5vdGhlciBzdW1tYXJ5IGFuZCBpbmNsdWRlcyB0aGUgUi1zcS4gb3V0cHV0LiBFeGFtcGxlDQpzdW1tYXJ5LmxtKG1vZDEpDQoNCnBvc3RoPWdsaHQobW9kZWwuMSwgbGluZmN0PW1jcChmYWN0b3J2YXJpYWJsZT0iVHVrZXkiKSkgICMjZ2l2ZXMgdGhlIHBvc3QtaG9jIFR1a2V5IGFuYWx5c2lzLiBFeGFtcGxlDQpwb3N0aD1nbGh0KG1vZDEsIGxpbmZjdD1tY3AoQ2hsb3JvcGh5bGw9IlR1a2V5IikpDQpzdW1tYXJ5KHBvc3RoKSAjI3Nob3dzIHRoZSBvdXRwdXQgaW4gYSBuaWNlIGZvcm1hdC4NCg0KIyNJZiB5b3Ugd2FudCB0byB0ZXN0IGZvciBob21vZ2VuZWl0eSBvZiByZWdyZXNzaW9uIHNsb3BlcyB5b3UgY2FuIGFsc28gaW5jbHVkZSBhbiBpbnRlcmFjdGlvbiB0ZXJtIGZvciB0aGUgSVYgYW5kIGNvdmFyaWF0ZS4gVGhhdCB3b3VsZCBiZToNCg0KbW9kZWw9YW92KGR2fmNvdmFyaWF0ZStJVitjb3ZhcmlhdGU6SVYsIGRhdGE9ZGF0YW5hbWUpICMjIGV4YW1wbGUNCg0KbW9kMj1hb3YodmVsLmZsb3d+Rmxvdy5yYXRlK0NobG9yb3BoeWxsK0Zsb3cucmF0ZTpDaGxvcm9waHlsbCwgZGF0YT1DQy5Ub3RhbERhdGEpICMjIG5vdCByaWdodD8NCiMjSWYgdGhlIGludGVyYWN0aW9uIHRlcm0gaXMgc2lnbmlmaWNhbnQgdGhlbiB5b3UgZG8gbm90IGhhdmUgaG9tb2dlbmVpdHkuDQoNCg0KYGBgDQoNClN0YXRzIG9uIGVhY2ggbGV2ZWwNCg0KYGBge3J9DQojI0xvb2tpbmcgYXQgb3RoZXIgc3RhdHMgd2UgY291bGQgcnVuDQpsaWJyYXJ5KG5sbWUpDQpsaWJyYXJ5KGxtZTQpDQpsaWJyYXJ5KGVmZmVjdHMpDQoNCg0KIyMgZXhhbXBsZQ0KZCA8LSBkYXRhLmZyYW1lKA0KICAgIFkgPSBybm9ybSg0OCksICAjIyMgZS5nLiB2ZWxvY2l0eQ0KICAgIHN1YmplY3QgPSBmYWN0b3IocmVwKDE6MTIsIDQpKSwgICMjIyBlLmcuIERfVl9UDQogICAgQSA9IGZhY3RvcihyZXAoMToyLCBlYWNoPTI0KSksICAgIyMjIyBlLmcuIExpZ2h0DQogICAgQiA9IGZhY3RvcihyZXAocmVwKDE6MiwgZWFjaD0xMiksIDIpKSkgICAjIyMgZS5nLiBGbG93LnJhdGUNCg0Kc3VtbWFyeShhb3YoWSB+IEEqQiArIEVycm9yKHN1YmplY3QvKEEqQikpLCBkYXRhPWQpKSAgIyBTdGFuZGFyZCByZXBlYXRlZCBtZWFzdXJlcyBBTk9WQQ0KDQptb2RlMSA8LSBsbWUoWX5BKkIsIHJhbmRvbSA9IH4xfHN1YmplY3QsIGRhdGE9ZCkgICMjIG5sbWUNCg0KbG1lcihZIH4gQSpCICsgKDF8c3ViamVjdCkgKyAoMXxBOnN1YmplY3QpICsgKDF8QjpzdWJqZWN0KSwgZGF0YT1kKSAgIyMjIGxtZTQNCg0KDQoNCiMjIyMjIyMjIyAgICBvdXIgZGF0YSB1c2luZyBubG1lIHBhY2thZ2UgICAgICMjIyMjIyMjIw0KDQptb2RlMSA8LSBsbWUoaGVhZGluZ352ZWwuZmxvdypMaWdodCwgcmFuZG9tPSB+MXxEX1ZfVCwgZGF0YT1DQy5Ub3RhbERhdGEpDQoNCm1vZGUyIDwtIGxtZShoZWFkaW5nfnZlbC5mbG93LCByYW5kb209IH4xfERfVl9ULCBkYXRhPUNDLlRvdGFsRGF0YSkNCg0KYW5vdmEobW9kZTEsIG1vZGUyKSAjaWYgaXQgc2hvd3Mgb25seSBtaW5vciBpbXByb3ZlbWVudCwgbm8gbmVlZCB0byBpbmNsdWRlIG1pc3NpbmcgZmFjdG9yDQoNCmFub3ZhKG1vZGUxKQ0KDQoNCiMjIyMjIyMjIyAgICBvdXIgZGF0YSB1c2luZyBsNG1lIHBhY2thZ2UgICAgICMjIyMjIyMjIw0KDQptb2RlbDEgPC0gbG1lcih2ZWwuZmxvdyB+IEZsb3cucmF0ZSpDaGxvcm9waHlsbCArICgxfERfVl9UKSArICgxfEZsb3cucmF0ZTpEX1ZfVCkgKyAoMXxDaGxvcm9waHlsbDpEX1ZfVCksIGRhdGE9Q0MuVG90YWxEYXRhKSAgIyMjDQoNCm1vZGVsMiA8LSBsbWVyKHZlbC5mbG93IH4gRmxvdy5yYXRlICsgKDF8RF9WX1QpICsgKDF8Rmxvdy5yYXRlOkRfVl9UKSwgZGF0YT1DQy5Ub3RhbERhdGEpDQoNCmFub3ZhKG1vZGVsMSwgbW9kZWwyKSAjaWYgaXQgc2hvd3Mgb25seSBtaW5vciBpbXByb3ZlbWVudCwgbm8gbmVlZCB0byBpbmNsdWRlIG1pc3NpbmcgZmFjdG9yDQoNCmFub3ZhKG1vZGVsMSkNCg0KIyMjIyMjIyMjIHBsb3R0aW5nIGVmZmVjdCBvZiB0aGUgbW9kZWxzICAgICMjIyMjIyMjIyMNCnBsb3QoZWZmZWN0KCJ2ZWwuZmxvdypMaWdodCIsc2U9VFJVRSwgY29uZmlkZW5jZS5sZXZlbD0uOTUsIG1vZGUxKSkNCg0KDQojIyMjIyMgaW50ZXJhY3Rpb24gcGxvdCB3aXRoIExhdHRpY2UgZXh0cmEgIyMjIyMjIyMjDQpsaWJyYXJ5KGxhdHRpY2VFeHRyYSkNCnh5cGxvdChDQy5Ub3RhbERhdGEkdHVybi5hbmdsZX5DQy5Ub3RhbERhdGEkRmxvdy5yYXRlfENDLlRvdGFsRGF0YSRMaWdodCpDQy5Ub3RhbERhdGEkQ2hsb3JvcGh5bGwsICBtYWluPSJTY2F0dGVycGxvdHMgYnkgTGlnaHQgYW5kIENobG9yb3BoeWxsIiwgDQogICB5bGFiPSJUdXJuIEFuZ2xlIChkZWdyZWVzKSIsIHhsYWI9IkZsb3cgUmF0ZSAoY20vcykiKSArDQogICBsYXllcihwYW5lbC5hYmxpbmVxKGxtKHkgfiB4KSwgci5zcSA9IFRSVUUsDQogICBhdCA9IDAuNzUsIGFkaj0xOjUpLCBzdHlsZSA9IDQpDQoNCg0KIyMjIyMjIyMjIyMjIyMgaW50ZXJhY3Rpb24gcGxvdHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCmludGVyYWN0aW9uLnBsb3QoQ0MuVG90YWxEYXRhJEZsb3cucmF0ZSwgIyMgeCBheGlzDQogICAgICAgICAgICAgICAgIENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCwgIyMgZmFjdG9yIGZvciBsaW5lcw0KICAgICAgICAgICAgICAgICBsb2cxMChDQy5Ub3RhbERhdGEkdmVsLmZsb3cpLCAgIyMgeSBheGlzDQogICAgICAgICAgICAgICAgIGZ1biA9IG1lYW4sDQogICAgICAgICAgICAgICAgIHR5cGUgPSBjKCJiIiksIGxlZ2VuZCA9IFRSVUUsDQogICAgICAgICAgICAgICAgIHRyYWNlLmxhYmVsID0gIkNobG9yb3BoeWxsIiwNCiAgICAgICAgICAgICAgICAgeWxpbSA9IGMoLTEsMTApLA0KICAgICAgICAgICAgICAgICBtYWluID0gIkxpZ2h0cyBPbiIsDQogICAgICAgICAgICAgICAgIHhsYWIgPSAiRmxvdyByYXRlIChjbS9zKSIsDQogICAgICAgICAgICAgICAgIHlsYWIgPSAiVmVsb2NpdHkgKGNtL3MpIiwNCiAgICAgICAgICAgICAgICAgY29sID0gQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsLCBwY2ggPSBjKDE6OSksDQogICAgICAgICAgICAgICAgIGF4ZXMgPSBUUlVFKQ0KI2xpYnJhcnkodGlkeXIpDQojbGlicmFyeShkcGx5cikNCiNDQy5Ub3RhbERhdGEgJT4lIG11dGF0ZV9hbGwofnJlcGxhY2UoLiwgaXMubmFuKC4pLCAwKSkNCkNDLlRvdGFsRGF0YVtpcy5uYW4oQ0MuVG90YWxEYXRhKV0gPC0gMA0KcmFuZ2UoQ0MuVG90YWxEYXRhJGxvZy52ZWwuZmxvdykNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0Kcm0obW9kZTEpDQoNCnJtKG1vZGUyKQ0KDQoNCm1vZDEgPC0gbG0odmVsLmZsb3d+Rmxvdy5yYXRlKkNobG9yb3BoeWxsLCBkYXRhID0gQ0MuVG90YWxEYXRhKQ0Kc3VtbWFyeShtb2QxKQ0KDQpgYGANCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiAgICAgICAgICAgICAgICAgS2VybmVsIERlbnNpdHkgUGxvdHMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQpUdXJuIEFuZ2xlcyBmaXJzdC4uLg0KDQpgYGB7cn0NCnJtKGtkMSwga2QyLCBrZDMsIGtkNCwga2Q1LCBrZDYsIGtkNywga2Q4KQ0KDQojIyMgS2VybmVsIGRlbnNpdHkgcGxvdHMgIyMjIyMjIyMjIyMjIyMjIyMjIyBUdXJuIEFuZ2xlcw0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDIsMikpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEZsb3cgUmF0ZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkRmxvdy5yYXRlKQ0KDQprZDEgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJEZsb3cucmF0ZT09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMwKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgRmxvdyBSYXRlLCAoYWxsIGRhdGEgbm8gbGlnaHQgdmFyKSwgTGlnaHRzIE9uIikNCg0Ka2QyIDwtIGRlbnNpdHkobDEkdHVybi5hbmdsZVtsMSRGbG93LnJhdGU9PSIwLjYiXSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkRmxvdy5yYXRlPT0iMyJdKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJEZsb3cucmF0ZT09IjUuOSJdKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJEZsb3cucmF0ZT09IjguOSJdKQ0KbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBDaGxvcm9waHlsbCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkQ2hsb3JvcGh5bGwpDQoNCmtkMSA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkQ2hsb3JvcGh5bGw9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzMCksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIENobG9yb3BoeWxsLCBMaWdodHMgT24iKQ0KDQprZDIgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJENobG9yb3BoeWxsPT0iNC4zIl0pDQpsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJENobG9yb3BoeWxsPT0iNC42Il0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkOCA8LSBkZW5zaXR5KGwxJHR1cm4uYW5nbGVbbDEkQ2hsb3JvcGh5bGw9PSI1LjUiXSkNCmxpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkobDEkdHVybi5hbmdsZVtsMSRDaGxvcm9waHlsbD09IjYuMSJdKQ0KbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJENobG9yb3BoeWxsPT0iNy42Il0pDQpsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0Ka2Q2IDwtIGRlbnNpdHkobDEkdHVybi5hbmdsZVtsMSRDaGxvcm9waHlsbD09IjEzLjUiXSkNCmxpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0Ka2Q3IDwtIGRlbnNpdHkobDEkdHVybi5hbmdsZVtsMSRDaGxvcm9waHlsbD09IjE5Il0pDQpsaW5lcyhrZDcsIGNvbD0nYmxhY2snLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiQ2hsb3JvcGh5bGwgIDAiLCAiQ2hsb3JvcGh5bGwgNC4zIiwgIkNobG9yb3BoeWxsIDQuNiIsICJDaGxvcm9waHlsbCA1LjUiLCAiQ2hsb3JvcGh5bGwgNi4xIiwgDQogICAgICAgICAgICAgICAgICAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCAiZGFyayByZWQiLCAicHVycGxlIiwgImJsYWNrIiksDQogICAgICAgbHR5ID0gMSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgR3Vhbm8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsZXZlbHMoQ0MuVG90YWxEYXRhJEd1YW5vKQ0KDQprZDEgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJEd1YW5vPT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMzApLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBHdWFubywgTGlnaHRzIE9uIikNCg0Ka2QyIDwtIGRlbnNpdHkobDEkdHVybi5hbmdsZVtsMSRHdWFubz09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJHdWFubyBQcmVzZW50IiwgIkd1YW5vIEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTGlnaHQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsZXZlbHMoQ0MuVG90YWxEYXRhJExpZ2h0KQ0KDQprZDEgPC0gZGVuc2l0eShsMSR0dXJuLmFuZ2xlW2wxJExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMzApLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBMaWdodCIpDQoNCmtkMiA8LSBkZW5zaXR5KGwwJHR1cm4uYW5nbGVbbDAkTGlnaHQ9PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCmBgYA0KDQpOb3cgbG9va2luZyBhdCB2ZWxvY2l0eSBpbiByZWxhdGlvbiB0byBmbG93IGluc3RlYWQuLi4uDQoNCmBgYHtyfQ0KIyMjIEtlcm5lbCBkZW5zaXR5IHBsb3RzICMjIyMjIyMjIyMjIyMjIyMjIyMgU3dpbW1pbmcgdmVsb2NpdHkNCnBhcihtYXI9IGMoNCw0LDIsMSkpDQpwYXIobWZyb3c9YygyLDIpKQ0KI3JhbmdlKENDLlRvdGFsRGF0YSR2ZWwuZmxvdykNCiNwbG90KENDLlRvdGFsRGF0YSR2ZWwuZmxvdykNCiMjQ0MuVG90YWxEYXRhJGxvZy52ZWwuZmxvdyA8LSBsb2cxMChDQy5Ub3RhbERhdGEkdmVsLmZsb3cpDQojc3RyKENDLlRvdGFsRGF0YSkNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEZsb3cgUmF0ZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkRmxvdy5yYXRlKQ0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRGbG93LnJhdGU9PSIwIl0pKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xMCw5MCksIHlsaW0gPSBjKDAsIDAuMDM1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEZsb3cgUmF0ZSwgTGlnaHRzIE9uIikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkRmxvdy5yYXRlPT0iMC42Il0pKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkRmxvdy5yYXRlPT0iMyJdKSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkRmxvdy5yYXRlPT0iNS45Il0pKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRGbG93LnJhdGU9PSI4LjkiXSkpDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENobG9yb3BoeWxsICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCkNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkQ2hsb3JvcGh5bGw9PSIwIl0pKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC05MCw5MCksIHlsaW0gPSBjKDAsIDAuMDM1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIENobG9yb3BoeWxsLCBMaWdodHMgT24iKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRDaGxvcm9waHlsbD09IjQuMyJdKSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGxvZzEwKGwxJHZlbC5mbG93W2wxJENobG9yb3BoeWxsPT0iNC42Il0pKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDggPC0gZGVuc2l0eShsb2cxMChsMSR2ZWwuZmxvd1tsMSRDaGxvcm9waHlsbD09IjUuNSJdKSkNCmxpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkQ2hsb3JvcGh5bGw9PSI2LjEiXSkpDQpsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGxvZzEwKGwxJHZlbC5mbG93W2wxJENobG9yb3BoeWxsPT0iNy42Il0pKQ0KbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCmtkNiA8LSBkZW5zaXR5KGxvZzEwKGwxJHZlbC5mbG93W2wxJENobG9yb3BoeWxsPT0iMTMuNSJdKSkNCmxpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0Ka2Q3IDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkQ2hsb3JvcGh5bGw9PSIxOSJdKSkNCmxpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBHdWFubyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkR3Vhbm8pDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKGwxJHZlbC5mbG93W2wxJEd1YW5vPT0iUHJlc2VudCJdKSkNCnBsb3Qoa2QxLCB4bGltID0gYygtOTAsOTApLCB5bGltID0gYygwLCAwLjAzNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChpbiByZWxhdGlvbiB0byBmbG93KSBWcyBHdWFubywgTGlnaHRzIE9uIikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAobDEkdmVsLmZsb3dbbDEkR3Vhbm89PSJBYnNlbnQiXSkpDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBMaWdodCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkTGlnaHQpDQoNCmtkMSA8LSBkZW5zaXR5KGwxJGxvZy52ZWwuZmxvd1tsMSRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtOTAsOTApLCB5bGltID0gYygwLCAwLjAzNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChpbiByZWxhdGlvbiB0byBmbG93KSBWcyBMaWdodCIpDQoNCmtkMiA8LSBkZW5zaXR5KGwxJGxvZy52ZWwuZmxvd1tsMSRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KYGBgDQoNCk5vdyBmb3IgaGVhZGluZ3MuLi4uLg0KDQpgYGB7cn0NCiMjIGNvcGllZCBmcm9tIG5vdGVib29rMDAtbWVyZ2luZyBmaWxlcyBhbmQgYWRkaW5nIGNvbHVtbnMNCiMjQ0MuVG90YWxEYXRhJGhlYWRpbmcgPC0gYXRhbihDQy5Ub3RhbERhdGEkZHgvQ0MuVG90YWxEYXRhJGR5KQ0KIyMgdGhpcyBpcyBob3cgaXQgd2FzIGNhbGN1bGF0ZWQNCnJhbmdlKENDLlRvdGFsRGF0YSRoZWFkaW5nKSAgIyMgZ2l2ZXMgLTEuNTcgdG8gMS41Nw0KcmFuZ2UobDEkaGVhZGluZy5waVtsMSRGbG93LnJhdGU9PSIwIl0pICAjIyBnaXZlcyAtOTAgdG8gOTAgICh3aHkgbm90IC0xODAsIHRvIDE4MD8/KQ0KIyMgc2hvdWxkIGJlDQpDQy5Ub3RhbERhdGEkaGVhZGluZyA8LSBhdGFuMihDQy5Ub3RhbERhdGEkZHgsIENDLlRvdGFsRGF0YSRkeSkNCg0KbDEkaGVhZGluZy5waSA8LSBsMSRoZWFkaW5nLygyKnBpKSozNjANCnJhbmdlKENDLlRvdGFsRGF0YSRoZWFkaW5nKSAgIyMgZ2l2ZXMgLTMuMTQgdG8gMy4xNA0KcmFuZ2UobDEkaGVhZGluZy5waSkgICMjIGdpdmVzIC0xODAgdG8gMTgwICANCg0Kcm0oa2QxLCBrZDIsIGtkMywga2Q0LCBrZDUsIGtkNiwga2Q3LCBrZDgpDQoNCg0KIyMjIEtlcm5lbCBkZW5zaXR5IHBsb3RzICMjIyMjIyMjIyMjIyMjIyMjIyMgSGVhZGluZ3MNCnBhcihtYXI9IGMoNCw0LDIsMSkpDQpwYXIobWZyb3c9YygyLDIpKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGbG93IFJhdGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsZXZlbHMoQ0MuVG90YWxEYXRhJEZsb3cucmF0ZSkNCg0Ka2QxIDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgRmxvdyBSYXRlLCBMaWdodHMgT24iKQ0KDQprZDIgPC0gZGVuc2l0eShsMSRoZWFkaW5nLnBpW2wxJEZsb3cucmF0ZT09IjAuNiJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRGbG93LnJhdGU9PSIzIl0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkRmxvdy5yYXRlPT0iNS45Il0pDQpsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkRmxvdy5yYXRlPT0iOC45Il0pDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENobG9yb3BoeWxsICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCkNCg0Ka2QxIDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRDaGxvcm9waHlsbD09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDE1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZyBWcyBDaGxvcm9waHlsbCwgTGlnaHRzIE9uIikNCg0Ka2QyIDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRDaGxvcm9waHlsbD09IjQuMyJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRDaGxvcm9waHlsbD09IjQuNiJdKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDggPC0gZGVuc2l0eShsMSRoZWFkaW5nLnBpW2wxJENobG9yb3BoeWxsPT0iNS41Il0pDQpsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkQ2hsb3JvcGh5bGw9PSI2LjEiXSkNCmxpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkobDEkaGVhZGluZy5waVtsMSRDaGxvcm9waHlsbD09IjcuNiJdKQ0KbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCmtkNiA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkQ2hsb3JvcGh5bGw9PSIxMy41Il0pDQpsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCmtkNyA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkQ2hsb3JvcGh5bGw9PSIxOSJdKQ0KbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBHdWFubyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkR3Vhbm8pDQoNCmtkMSA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkR3Vhbm89PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMTUpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEd1YW5vLCBMaWdodHMgT24iKQ0KDQprZDIgPC0gZGVuc2l0eShsMSRoZWFkaW5nLnBpW2wxJEd1YW5vPT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBMaWdodCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkTGlnaHQpDQoNCmtkMSA8LSBkZW5zaXR5KGwxJGhlYWRpbmcucGlbbDEkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgTGlnaHQiKQ0KDQprZDIgPC0gZGVuc2l0eShsMCRoZWFkaW5nLnBpW2wwJExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQpgYGANCg0KTm93IGZvciBwaXRjaC4uLi4NCg0KYGBge3J9DQojIyMgS2VybmVsIGRlbnNpdHkgcGxvdHMgIyMjIyMjIyMjIyMjIyMjIyMjIyBQaXRjaA0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDIsMikpDQoNCkNDLlRvdGFsRGF0YSRwaXRjaC5wZXJmZWN0IDwtIENDLlRvdGFsRGF0YSRwaXRjaC8oMipwaSkqMzYwDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGbG93IFJhdGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsZXZlbHMoQ0MuVG90YWxEYXRhJEZsb3cucmF0ZSkNCg0Ka2QxIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJEZsb3cucmF0ZT09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtOTAsOTApLCB5bGltID0gYygwLCAwLjA2KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiUGl0Y2ggVnMgRmxvdyBSYXRlIikNCg0Ka2QyIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJEZsb3cucmF0ZT09IjAuNiJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJEZsb3cucmF0ZT09IjMiXSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJEZsb3cucmF0ZT09IjUuOSJdKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShDQy5Ub3RhbERhdGEkcGl0Y2gucGVyZmVjdFtDQy5Ub3RhbERhdGEkRmxvdy5yYXRlPT0iOC45Il0pDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENobG9yb3BoeWxsICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRDaGxvcm9waHlsbCkNCg0Ka2QxIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC05MCw5MCksIHlsaW0gPSBjKDAsIDAuMDYpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJQaXRjaCBWcyBDaGxvcm9waHlsbCIpDQoNCmtkMiA8LSBkZW5zaXR5KENDLlRvdGFsRGF0YSRwaXRjaC5wZXJmZWN0W0NDLlRvdGFsRGF0YSRDaGxvcm9waHlsbD09IjQuMyJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsPT0iNC42Il0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkOCA8LSBkZW5zaXR5KENDLlRvdGFsRGF0YSRwaXRjaC5wZXJmZWN0W0NDLlRvdGFsRGF0YSRDaGxvcm9waHlsbD09IjUuNSJdKQ0KbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShDQy5Ub3RhbERhdGEkcGl0Y2gucGVyZmVjdFtDQy5Ub3RhbERhdGEkQ2hsb3JvcGh5bGw9PSI2LjEiXSkNCmxpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsPT0iNy42Il0pDQpsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0Ka2Q2IDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsPT0iMTMuNSJdKQ0KbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQprZDcgPC0gZGVuc2l0eShDQy5Ub3RhbERhdGEkcGl0Y2gucGVyZmVjdFtDQy5Ub3RhbERhdGEkQ2hsb3JvcGh5bGw9PSIxOSJdKQ0KbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBHdWFubyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkR3Vhbm8pDQoNCmtkMSA8LSBkZW5zaXR5KENDLlRvdGFsRGF0YSRwaXRjaC5wZXJmZWN0W0NDLlRvdGFsRGF0YSRHdWFubz09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtOTAsOTApLCB5bGltID0gYygwLCAwLjA2KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiUGl0Y2ggVnMgR3Vhbm8iKQ0KDQprZDIgPC0gZGVuc2l0eShDQy5Ub3RhbERhdGEkcGl0Y2gucGVyZmVjdFtDQy5Ub3RhbERhdGEkR3Vhbm89PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIExpZ2h0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRMaWdodCkNCg0Ka2QxIDwtIGRlbnNpdHkoQ0MuVG90YWxEYXRhJHBpdGNoLnBlcmZlY3RbQ0MuVG90YWxEYXRhJExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC05MCw5MCksIHlsaW0gPSBjKDAsIDAuMDYpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJQaXRjaCBWcyBMaWdodCIpDQoNCmtkMiA8LSBkZW5zaXR5KENDLlRvdGFsRGF0YSRwaXRjaC5wZXJmZWN0W0NDLlRvdGFsRGF0YSRMaWdodD09IkFic2VudCJdKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KYGBgDQoNCkZvciBlYWNoIGxldmVsIG9mIEZsb3cNCg0KYGBge3J9DQoNCiMjIyBLZXJuZWwgZGVuc2l0eSBwbG90cyAjIyMjIyMjIyMjIyMjIyMjIyMjIFR1cm4gQW5nbGVzDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywyKSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ2hsb3JvcGh5bGwgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsZXZlbHMoQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsKQ0KDQprZDEgPC0gZGVuc2l0eShmMCR0dXJuLmFuZ2xlW2YwJENobG9yb3BoeWxsPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIENobG9yb3BoeWxsLCBGbG93ID0gMCIpDQoNCiMja2QyIDwtIGRlbnNpdHkoZjAkdHVybi5hbmdsZVtmMCRDaGxvcm9waHlsbD09IjQuMyJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShmMCR0dXJuLmFuZ2xlW2YwJENobG9yb3BoeWxsPT0iNC42Il0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkOCA8LSBkZW5zaXR5KGYwJHR1cm4uYW5nbGVbZjAkQ2hsb3JvcGh5bGw9PSI1LjUiXSkNCmxpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShmMCR0dXJuLmFuZ2xlW2YwJENobG9yb3BoeWxsPT0iNi4xIl0pDQojI2xpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkoZjAkdHVybi5hbmdsZVtmMCRDaGxvcm9waHlsbD09IjcuNiJdKQ0KbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCiMja2Q2IDwtIGRlbnNpdHkoZjAkdHVybi5hbmdsZVtmMCRDaGxvcm9waHlsbD09IjEzLjUiXSkNCiMjbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQprZDcgPC0gZGVuc2l0eShmMCR0dXJuLmFuZ2xlW2YwJENobG9yb3BoeWxsPT0iMTkiXSkNCmxpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZi42JHR1cm4uYW5nbGVbZi42JENobG9yb3BoeWxsPT0iMCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgQ2hsb3JvcGh5bGwsIEZsb3cgPSAwLjYiKQ0KDQprZDIgPC0gZGVuc2l0eShmLjYkdHVybi5hbmdsZVtmLjYkQ2hsb3JvcGh5bGw9PSI0LjMiXSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGYuNiR0dXJuLmFuZ2xlW2YuNiRDaGxvcm9waHlsbD09IjQuNiJdKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkOCA8LSBkZW5zaXR5KGYuNiR0dXJuLmFuZ2xlW2YuNiRDaGxvcm9waHlsbD09IjUuNSJdKQ0KIyNsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGYuNiR0dXJuLmFuZ2xlW2YuNiRDaGxvcm9waHlsbD09IjYuMSJdKQ0KbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KGYuNiR0dXJuLmFuZ2xlW2YuNiRDaGxvcm9waHlsbD09IjcuNiJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0Ka2Q2IDwtIGRlbnNpdHkoZi42JHR1cm4uYW5nbGVbZi42JENobG9yb3BoeWxsPT0iMTMuNSJdKQ0KbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQojI2tkNyA8LSBkZW5zaXR5KGYuNiR0dXJuLmFuZ2xlW2YuNiRDaGxvcm9waHlsbD09IjE5Il0pDQojI2xpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KGYzJHR1cm4uYW5nbGVbZjMkQ2hsb3JvcGh5bGw9PSIwIl0pDQpwbG90KGtkMSx4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDMiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGYzJHR1cm4uYW5nbGVbZjMkQ2hsb3JvcGh5bGw9PSI0LjMiXSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShmMyR0dXJuLmFuZ2xlW2YzJENobG9yb3BoeWxsPT0iNC42Il0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDggPC0gZGVuc2l0eShmMyR0dXJuLmFuZ2xlW2YzJENobG9yb3BoeWxsPT0iNS41Il0pDQojI2xpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShmMyR0dXJuLmFuZ2xlW2YzJENobG9yb3BoeWxsPT0iNi4xIl0pDQojI2xpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShmMyR0dXJuLmFuZ2xlW2YzJENobG9yb3BoeWxsPT0iNy42Il0pDQojI2xpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQojI2tkNiA8LSBkZW5zaXR5KGYzJHR1cm4uYW5nbGVbZjMkQ2hsb3JvcGh5bGw9PSIxMy41Il0pDQojI2xpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0KIyNrZDcgPC0gZGVuc2l0eShmMyR0dXJuLmFuZ2xlW2YzJENobG9yb3BoeWxsPT0iMTkiXSkNCiMjbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hscm9waHlsbCA1LjUiLCAiQ2hsb3JvcGh5bGwgNi4xIiwgDQogICAgICAgICAgICAgICAgICAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCAiZGFyayByZWQiLCAicHVycGxlIiwgImJsYWNrIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGY1JHR1cm4uYW5nbGVbZjUkQ2hsb3JvcGh5bGw9PSIwIl0pDQpwbG90KGtkMSx4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDUuOSIpDQoNCiMja2QyIDwtIGRlbnNpdHkoZjUkdHVybi5hbmdsZVtmNSRDaGxvcm9waHlsbD09IjQuMyJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KGY1JHR1cm4uYW5nbGVbZjUkQ2hsb3JvcGh5bGw9PSI0LjYiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkOCA8LSBkZW5zaXR5KGY1JHR1cm4uYW5nbGVbZjUkQ2hsb3JvcGh5bGw9PSI1LjUiXSkNCiMjbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KGY1JHR1cm4uYW5nbGVbZjUkQ2hsb3JvcGh5bGw9PSI2LjEiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KGY1JHR1cm4uYW5nbGVbZjUkQ2hsb3JvcGh5bGw9PSI3LjYiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCiMja2Q2IDwtIGRlbnNpdHkoZjUkdHVybi5hbmdsZVtmNSRDaGxvcm9waHlsbD09IjEzLjUiXSkNCiMjbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQojI2tkNyA8LSBkZW5zaXR5KGY1JHR1cm4uYW5nbGVbZjUkQ2hsb3JvcGh5bGw9PSIxOSJdKQ0KIyNsaW5lcyhrZDcsIGNvbD0nYmxhY2snLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiQ2hsb3JvcGh5bGwgIDAiLCAiQ2hsb3JvcGh5bGwgNC4zIiwgIkNobG9yb3BoeWxsIDQuNiIsICJDaGxvcm9waHlsbCA1LjUiLCAiQ2hsb3JvcGh5bGwgNi4xIiwgDQogICAgICAgICAgICAgICAgICAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCAiZGFyayByZWQiLCAicHVycGxlIiwgImJsYWNrIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGY4JHR1cm4uYW5nbGVbZjgkQ2hsb3JvcGh5bGw9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgQ2hsb3JvcGh5bGwsIEZsb3cgPSA4LjkiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGY4JHR1cm4uYW5nbGVbZjgkQ2hsb3JvcGh5bGw9PSI0LjMiXSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JENobG9yb3BoeWxsPT0iNC42Il0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDggPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JENobG9yb3BoeWxsPT0iNS41Il0pDQojI2xpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JENobG9yb3BoeWxsPT0iNi4xIl0pDQojI2xpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JENobG9yb3BoeWxsPT0iNy42Il0pDQojI2xpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQojI2tkNiA8LSBkZW5zaXR5KGY4JHR1cm4uYW5nbGVbZjgkQ2hsb3JvcGh5bGw9PSIxMy41Il0pDQojI2xpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0KIyNrZDcgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JENobG9yb3BoeWxsPT0iMTkiXSkNCiMjbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsIA0KICAgICAgICAgICAgICAgICAgIkNobG9yb3BoeWxsIDcuNiIsICJDaGxvcm9waHlsbCAxMy41IiwgJ0NobG9yb3BoeWxsIDE5JyksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiwgImRhcmsgcmVkIiwgInB1cnBsZSIsICJibGFjayIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBHdWFubyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMikpDQpsZXZlbHMoQ0MuVG90YWxEYXRhJEd1YW5vKQ0KDQprZDEgPC0gZGVuc2l0eShmMCR0dXJuLmFuZ2xlW2YwJEd1YW5vPT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIEd1YW5vLCBGbG93ID0gMCIpDQoNCmtkMiA8LSBkZW5zaXR5KGYwJHR1cm4uYW5nbGVbZjAkR3Vhbm89PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShmLjYkdHVybi5hbmdsZVtmLjYkR3Vhbm89PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgR3Vhbm8sIEZsb3cgPSAwLjYiKQ0KDQprZDIgPC0gZGVuc2l0eShmLjYkdHVybi5hbmdsZVtmLjYkR3Vhbm89PSJBYnNlbnQiXSkNCiMjcGxvdChrZDIsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0ncmVkJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgR3Vhbm8sIEZsb3cgPSAwLjYiKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJHdWFubyBQcmVzZW50IiwgIkd1YW5vIEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGYzJHR1cm4uYW5nbGVbZjMkR3Vhbm89PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgR3Vhbm8sIEZsb3cgPSAzIikNCg0Ka2QyIDwtIGRlbnNpdHkoZjMkdHVybi5hbmdsZVtmMyRHdWFubz09IkFic2VudCJdKQ0KIyNwbG90KGtkMiwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdyZWQnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBHdWFubywgRmxvdyA9IDMiKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0KIyNrZDEgPC0gZGVuc2l0eShmNSR0dXJuLmFuZ2xlW2Y1JEd1YW5vPT0iUHJlc2VudCJdKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgR3Vhbm8sIEZsb3cgPSA1LjkiKQ0KDQprZDIgPC0gZGVuc2l0eShmNSR0dXJuLmFuZ2xlW2Y1JEd1YW5vPT0iQWJzZW50Il0pDQpwbG90KGtkMiwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdyZWQnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBHdWFubywgRmxvdyA9IDUuOSIpDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQojI2tkMSA8LSBkZW5zaXR5KGY4JHR1cm4uYW5nbGVbZjgkR3Vhbm89PSJQcmVzZW50Il0pDQojI3Bsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBHdWFubywgRmxvdyA9IDguOSIpDQoNCmtkMiA8LSBkZW5zaXR5KGY4JHR1cm4uYW5nbGVbZjgkR3Vhbm89PSJBYnNlbnQiXSkNCnBsb3Qoa2QyLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J3JlZCcsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIEd1YW5vLCBGbG93ID0gOC45IikNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJHdWFubyBQcmVzZW50IiwgIkd1YW5vIEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIExpZ2h0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoNCnBhcihtYXI9IGMoNCw0LDIsMSkpDQpwYXIobWZyb3c9YygzLDIpKQ0KbGV2ZWxzKENDLlRvdGFsRGF0YSRMaWdodCkNCg0Ka2QxIDwtIGRlbnNpdHkoZjAkdHVybi5hbmdsZVtmMCRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBMaWdodCwgRmxvdyA9IDAiKQ0KDQprZDIgPC0gZGVuc2l0eShmMCR0dXJuLmFuZ2xlW2YwJExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZi42JHR1cm4uYW5nbGVbZi42JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBGbG93ID0gMC42IikNCg0Ka2QyIDwtIGRlbnNpdHkoZi42JHR1cm4uYW5nbGVbZi42JExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZjMkdHVybi5hbmdsZVtmMyRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBMaWdodCwgRmxvdyA9IDMiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGYzJHR1cm4uYW5nbGVbZjMkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGY1JHR1cm4uYW5nbGVbZjUkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgTGlnaHQsIEZsb3cgPSA1LjkiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGY1JHR1cm4uYW5nbGVbZjUkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGY4JHR1cm4uYW5nbGVbZjgkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgTGlnaHQsIEZsb3cgPSA4LjkiKQ0KDQprZDIgPC0gZGVuc2l0eShmOCR0dXJuLmFuZ2xlW2Y4JExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQpgYGANCg0KRm9yIGVhY2ggbGV2ZWwgb2YgQ2hsb3JvcGh5bGwNCg0KYGBge3J9DQoNCiMjIyBLZXJuZWwgZGVuc2l0eSBwbG90cyAjIyMjIyMjIyMjIyMjIyMjIyMjIFR1cm4gQW5nbGVzDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywzKSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRmxvdyBSYXRlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRGbG93LnJhdGUpDQoNCmtkMSA8LSBkZW5zaXR5KENobEEwJHR1cm4uYW5nbGVbQ2hsQTAkRmxvdy5yYXRlPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGUgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDAiKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBMCR0dXJuLmFuZ2xlW0NobEEwJEZsb3cucmF0ZT09IjAuNiJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkoQ2hsQTAkdHVybi5hbmdsZVtDaGxBMCRGbG93LnJhdGU9PSIzIl0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KENobEEwJHR1cm4uYW5nbGVbQ2hsQTAkRmxvdy5yYXRlPT0iNS45Il0pDQpsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KENobEEwJHR1cm4uYW5nbGVbQ2hsQTAkRmxvdy5yYXRlPT0iOC45Il0pDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQoNCiMja2QxIDwtIGRlbnNpdHkoQ2hsQTQuMyR0dXJuLmFuZ2xlW0NobEE0LjMkRmxvdy5yYXRlPT0iMCJdKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNC4zIikNCg0Ka2QyIDwtIGRlbnNpdHkoQ2hsQTQuMyR0dXJuLmFuZ2xlW0NobEE0LjMkRmxvdy5yYXRlPT0iMC42Il0pDQpwbG90KGtkMiwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdsaWdodCBibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNC4zIikNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNC4zJHR1cm4uYW5nbGVbQ2hsQTQuMyRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNC4zJHR1cm4uYW5nbGVbQ2hsQTQuMyRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEE0LjMkdHVybi5hbmdsZVtDaGxBNC4zJEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNC42JHR1cm4uYW5nbGVbQ2hsQTQuNiRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNC42IikNCg0Ka2QyIDwtIGRlbnNpdHkoQ2hsQTQuNiR0dXJuLmFuZ2xlW0NobEE0LjYkRmxvdy5yYXRlPT0iMC42Il0pDQojI3Bsb3Qoa2QyLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA0LjYiKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNC42JHR1cm4uYW5nbGVbQ2hsQTQuNiRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNC42JHR1cm4uYW5nbGVbQ2hsQTQuNiRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEE0LjYkdHVybi5hbmdsZVtDaGxBNC42JEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNS41JHR1cm4uYW5nbGVbQ2hsQTUuNSRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNS41IikNCg0KIyNrZDIgPC0gZGVuc2l0eShDaGxBNS41JHR1cm4uYW5nbGVbQ2hsQTUuNSRGbG93LnJhdGU9PSIwLjYiXSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNS41JHR1cm4uYW5nbGVbQ2hsQTUuNSRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNS41JHR1cm4uYW5nbGVbQ2hsQTUuNSRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEE1LjUkdHVybi5hbmdsZVtDaGxBNS41JEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQojI2tkMSA8LSBkZW5zaXR5KENobEE2JHR1cm4uYW5nbGVbQ2hsQTYkRmxvdy5yYXRlPT0iMCJdKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNiIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEE2JHR1cm4uYW5nbGVbQ2hsQTYkRmxvdy5yYXRlPT0iMC42Il0pDQpwbG90KGtkMiwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdsaWdodCBibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNiIpDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoQ2hsQTYkdHVybi5hbmdsZVtDaGxBNiRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNiR0dXJuLmFuZ2xlW0NobEE2JEZsb3cucmF0ZT09IjUuOSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoQ2hsQTYkdHVybi5hbmdsZVtDaGxBNiRGbG93LnJhdGU9PSI4LjkiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTckdHVybi5hbmdsZVtDaGxBNyRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNyIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTckdHVybi5hbmdsZVtDaGxBNyRGbG93LnJhdGU9PSIwLjYiXSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNyR0dXJuLmFuZ2xlW0NobEE3JEZsb3cucmF0ZT09IjMiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KENobEE3JHR1cm4uYW5nbGVbQ2hsQTckRmxvdy5yYXRlPT0iNS45Il0pDQojI2xpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShDaGxBNyR0dXJuLmFuZ2xlW0NobEE3JEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQojI2tkMSA8LSBkZW5zaXR5KENobEExMyR0dXJuLmFuZ2xlW0NobEExMyRGbG93LnJhdGU9PSIwIl0pDQojI3Bsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAxMyIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEExMyR0dXJuLmFuZ2xlW0NobEExMyRGbG93LnJhdGU9PSIwLjYiXSkNCnBsb3Qoa2QyLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAxMyIpDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoQ2hsQTEzJHR1cm4uYW5nbGVbQ2hsQTEzJEZsb3cucmF0ZT09IjMiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KENobEExMyR0dXJuLmFuZ2xlW0NobEExMyRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEExMyR0dXJuLmFuZ2xlW0NobEExMyRGbG93LnJhdGU9PSI4LjkiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTE5JHR1cm4uYW5nbGVbQ2hsQTE5JEZsb3cucmF0ZT09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAxOSIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTE5JHR1cm4uYW5nbGVbQ2hsQTE5JEZsb3cucmF0ZT09IjAuNiJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KENobEExOSR0dXJuLmFuZ2xlW0NobEExOSRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBMTkkdHVybi5hbmdsZVtDaGxBMTkkRmxvdy5yYXRlPT0iNS45Il0pDQojI2xpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShDaGxBMTkkdHVybi5hbmdsZVtDaGxBMTkkRmxvdy5yYXRlPT0iOC45Il0pDQojI2xpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIExpZ2h0ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMykpDQoNCmtkMSA8LSBkZW5zaXR5KENobEEwJHR1cm4uYW5nbGVbQ2hsQTAkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSx4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDI1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gMCIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEEwJHR1cm4uYW5nbGVbQ2hsQTAkTGlnaHQ9PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTQuMyR0dXJuLmFuZ2xlW0NobEE0LjMkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSx4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDI1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gNC4zIikNCg0KIyNrZDIgPC0gZGVuc2l0eShDaGxBNC4zJHR1cm4uYW5nbGVbQ2hsQTQuMyRMaWdodD09IkFic2VudCJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KENobEE0LjYkdHVybi5hbmdsZVtDaGxBNC42JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDQuNiIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTQuNiR0dXJuLmFuZ2xlW0NobEE0LjYkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNS41JHR1cm4uYW5nbGVbQ2hsQTUuNSRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMjUpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJUdXJuIEFuZ2xlcyBWcyBMaWdodCwgQ2hsb3JvcGh5bGwgPSA1LjUiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KENobEE1LjUkdHVybi5hbmdsZVtDaGxBNS41JExpZ2h0PT0iQWJzZW50Il0pDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNiR0dXJuLmFuZ2xlW0NobEE2JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDYiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KENobEE2JHR1cm4uYW5nbGVbQ2hsQTYkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNyR0dXJuLmFuZ2xlW0NobEE3JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDciKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBNyR0dXJuLmFuZ2xlW0NobEE3JExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTEzJHR1cm4uYW5nbGVbQ2hsQTEzJExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEseGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlR1cm4gQW5nbGVzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDEzIikNCg0KIyNrZDIgPC0gZGVuc2l0eShDaGxBMTMkdHVybi5hbmdsZVtDaGxBMTMkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBMTkkdHVybi5hbmdsZVtDaGxBMTkkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSx4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDI1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVHVybiBBbmdsZXMgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gMTkiKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBMTkkdHVybi5hbmdsZVtDaGxBMTkkTGlnaHQ9PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCmBgYA0KDQpGb3IgZWFjaCBsZXZlbCBvZiBGbG93IChub3cgZm9yIHZlbG9jaXR5KQ0KDQpgYGB7cn0NCiMjIyBLZXJuZWwgZGVuc2l0eSBwbG90cyAjIyMjIyMjIyMjIyMjIyMjIyMjIFZlbG9jaXR5DQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywyKSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ2hsb3JvcGh5bGwgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKGYwJHZlbC5mbG93W2YwJENobG9yb3BoeWxsPT0iMCJdKSkNCnBsb3Qoa2QxLCB4bGltID0gYygtNyw3KSwgeWxpbSA9IGMoMCwgMC4xMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIENobG9yb3BoeWxsLCBGbG93ID0gMCIpDQoNCiMja2QyIDwtIGRlbnNpdHkobG9nMTAoZjAkdmVsLmZsb3dbZjAkQ2hsb3JvcGh5bGw9PSI0LjMiXSkpDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGxvZzEwKGYwJHZlbC5mbG93W2YwJENobG9yb3BoeWxsPT0iNC42Il0pKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDggPC0gZGVuc2l0eShsb2cxMChmMCR2ZWwuZmxvd1tmMCRDaGxvcm9waHlsbD09IjUuNSJdKSkNCmxpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShsb2cxMChmMCR2ZWwuZmxvd1tmMCRDaGxvcm9waHlsbD09IjYuMSJdKSkNCiMjbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsb2cxMChmMCR2ZWwuZmxvd1tmMCRDaGxvcm9waHlsbD09IjcuNiJdKSkNCmxpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQprZDYgPC0gZGVuc2l0eShsb2cxMChmMCR2ZWwuZmxvd1tmMCRDaGxvcm9waHlsbD09IjEzLjUiXSkpDQpsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCmtkNyA8LSBkZW5zaXR5KGxvZzEwKGYwJHZlbC5mbG93W2YwJENobG9yb3BoeWxsPT0iMTkiXSkpDQpsaW5lcyhrZDcsIGNvbD0nYmxhY2snLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiQ2hsb3JvcGh5bGwgIDAiLCAiQ2hsb3JvcGh5bGwgNC4zIiwgIkNobG9yb3BoeWxsIDQuNiIsICJDaGxvcm9wcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsIA0KICAgICAgICAgICAgICAgICAgIkNobG9yb3BoeWxsIDcuNiIsICJDaGxvcm9waHlsbCAxMy41IiwgJ0NobG9yb3BoeWxsIDE5JyksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiwgImRhcmsgcmVkIiwgInB1cnBsZSIsICJibGFjayIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKGYuNiR2ZWwuZmxvd1tmLjYkQ2hsb3JvcGh5bGw9PSIwIl0pKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC03LDcpLCB5bGltID0gYygwLCAwLjEyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgQ2hsb3JvcGh5bGwsIEZsb3cgPSAwLjYiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChmLjYkdmVsLmZsb3dbZi42JENobG9yb3BoeWxsPT0iNC4zIl0pKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobG9nMTAoZi42JHZlbC5mbG93W2YuNiRDaGxvcm9waHlsbD09IjQuNiJdKSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDggPC0gZGVuc2l0eShsb2cxMChmLjYkdmVsLmZsb3dbZi42JENobG9yb3BoeWxsPT0iNS41Il0pKQ0KIyNsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGxvZzEwKGYuNiR2ZWwuZmxvd1tmLjYkQ2hsb3JvcGh5bGw9PSI2LjEiXSkpDQpsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkobG9nMTAoZi42JHZlbC5mbG93W2YuNiRDaGxvcm9waHlsbD09IjcuNiJdKSkNCiMjbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCmtkNiA8LSBkZW5zaXR5KGxvZzEwKGYuNiR2ZWwuZmxvd1tmLjYkQ2hsb3JvcGh5bGw9PSIxMy41Il0pKQ0KbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQojI2tkNyA8LSBkZW5zaXR5KGxvZzEwKGYuNiR2ZWwuZmxvd1tmLjYkQ2hsb3JvcGh5bGw9PSIxOSJdKSkNCiMjbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsIA0KICAgICAgICAgICAgICAgICAgIkNobG9yb3BoeWxsIDcuNiIsICJDaGxvcm9waHlsbCAxMy41IiwgJ0NobG9yb3BoeWxsIDE5JyksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiwgImRhcmsgcmVkIiwgInB1cnBsZSIsICJibGFjayIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChmMyR2ZWwuZmxvd1tmMyRDaGxvcm9waHlsbD09IjAiXSkpDQpwbG90KGtkMSwgeGxpbSA9IGMoLTcsNyksIHlsaW0gPSBjKDAsIDAuMTIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDMiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KGxvZzEwKGYzJHZlbC5mbG93W2YzJENobG9yb3BoeWxsPT0iNC4zIl0pKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KGxvZzEwKGYzJHZlbC5mbG93W2YzJENobG9yb3BoeWxsPT0iNC42Il0pKQ0KIyNsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q4IDwtIGRlbnNpdHkobG9nMTAoZjMkdmVsLmZsb3dbZjMkQ2hsb3JvcGh5bGw9PSI1LjUiXSkpDQojI2xpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShsb2cxMChmMyR2ZWwuZmxvd1tmMyRDaGxvcm9waHlsbD09IjYuMSJdKSkNCiMjbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KGxvZzEwKGYzJHZlbC5mbG93W2YzJENobG9yb3BoeWxsPT0iNy42Il0pKQ0KIyNsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0KIyNrZDYgPC0gZGVuc2l0eShsb2cxMChmMyR2ZWwuZmxvd1tmMyRDaGxvcm9waHlsbD09IjEzLjUiXSkpDQojI2xpbmVzKGtkNiwgY29sPSdwdXJwbGUnLCBsd2Q9MikNCg0KIyNrZDcgPC0gZGVuc2l0eShsb2cxMChmMyR2ZWwuZmxvd1tmMyRDaGxvcm9waHlsbD09IjE5Il0pKQ0KIyNsaW5lcyhrZDcsIGNvbD0nYmxhY2snLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiQ2hsb3JvcGh5bGwgIDAiLCAiQ2hsb3JvcGh5bGwgNC4zIiwgIkNobG9yb3BoeWxsIDQuNiIsICJDaGxvcm9waHlsbCA1LjUiLCAiQ2hsb3JvcGh5bGwgNi4xIiwgDQogICAgICAgICAgICAgICAgICAiQ2hsb3JvcGh5bGwgNy42IiwgIkNobG9yb3BoeWxsIDEzLjUiLCAnQ2hsb3JvcGh5bGwgMTknKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiLCAiZGFyayByZWQiLCAicHVycGxlIiwgImJsYWNrIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKGY1JHZlbC5mbG93W2Y1JENobG9yb3BoeWxsPT0iMCJdKSkNCnBsb3Qoa2QxLCB4bGltID0gYygtNyw3KSwgeWxpbSA9IGMoMCwgMC4xMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIENobG9yb3BoeWxsLCBGbG93ID0gNS45IikNCg0KIyNrZDIgPC0gZGVuc2l0eShsb2cxMChmNSR2ZWwuZmxvd1tmNSRDaGxvcm9waHlsbD09IjQuMyJdKSkNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShsb2cxMChmNSR2ZWwuZmxvd1tmNSRDaGxvcm9waHlsbD09IjQuNiJdKSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkOCA8LSBkZW5zaXR5KGxvZzEwKGY1JHZlbC5mbG93W2Y1JENobG9yb3BoeWxsPT0iNS41Il0pKQ0KIyNsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkobG9nMTAoZjUkdmVsLmZsb3dbZjUkQ2hsb3JvcGh5bGw9PSI2LjEiXSkpDQojI2xpbmVzKGtkNCwgY29sPSdyZWQnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShsb2cxMChmNSR2ZWwuZmxvd1tmNSRDaGxvcm9waHlsbD09IjcuNiJdKSkNCiMjbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCiMja2Q2IDwtIGRlbnNpdHkobG9nMTAoZjUkdmVsLmZsb3dbZjUkQ2hsb3JvcGh5bGw9PSIxMy41Il0pKQ0KIyNsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCiMja2Q3IDwtIGRlbnNpdHkobG9nMTAoZjUkdmVsLmZsb3dbZjUkQ2hsb3JvcGh5bGw9PSIxOSJdKSkNCiMjbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsIA0KICAgICAgICAgICAgICAgICAgIkNobG9yb3BoeWxsIDcuNiIsICJDaGxvcm9waHlsbCAxMy41IiwgJ0NobG9yb3BoeWxsIDE5JyksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiwgImRhcmsgcmVkIiwgInB1cnBsZSIsICJibGFjayIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChmOCR2ZWwuZmxvd1tmOCRDaGxvcm9waHlsbD09IjAiXSkpDQpwbG90KGtkMSwgeGxpbSA9IGMoLTcsNyksIHlsaW0gPSBjKDAsIDAuMTIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDguOSIpDQoNCiMja2QyIDwtIGRlbnNpdHkobG9nMTAoZjgkdmVsLmZsb3dbZjgkQ2hsb3JvcGh5bGw9PSI0LjMiXSkpDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkobG9nMTAoZjgkdmVsLmZsb3dbZjgkQ2hsb3JvcGh5bGw9PSI0LjYiXSkpDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDggPC0gZGVuc2l0eShsb2cxMChmOCR2ZWwuZmxvd1tmOCRDaGxvcm9waHlsbD09IjUuNSJdKSkNCiMjbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KGxvZzEwKGY4JHZlbC5mbG93W2Y4JENobG9yb3BoeWxsPT0iNi4xIl0pKQ0KIyNsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkobG9nMTAoZjgkdmVsLmZsb3dbZjgkQ2hsb3JvcGh5bGw9PSI3LjYiXSkpDQojI2xpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQojI2tkNiA8LSBkZW5zaXR5KGxvZzEwKGY4JHZlbC5mbG93W2Y4JENobG9yb3BoeWxsPT0iMTMuNSJdKSkNCiMjbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQojI2tkNyA8LSBkZW5zaXR5KGxvZzEwKGY4JHZlbC5mbG93W2Y4JENobG9yb3BoeWxsPT0iMTkiXSkpDQojI2xpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEd1YW5vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywyKSkNCmxldmVscyhDQy5Ub3RhbERhdGEkR3Vhbm8pDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKGYwJHZlbC5mbG93W2YwJEd1YW5vPT0iUHJlc2VudCJdKSkNCnBsb3Qoa2QxLCB4bGltID0gYygtNyw3KSwgeWxpbSA9IGMoMCwgMC4wNCksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEd1YW5vLCBGbG93ID0gMCIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKGYwJHZlbC5mbG93W2YwJEd1YW5vPT0iQWJzZW50Il0pKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJHdWFubyBQcmVzZW50IiwgIkd1YW5vIEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KIyNrZDEgPC0gZGVuc2l0eShsb2cxMChmLjYkdmVsLmZsb3dbZi42JEd1YW5vPT0iUHJlc2VudCJdKSkNCiMjcGxvdChrZDEsIHhsaW0gPSBjKC03LDcpLCB5bGltID0gYygwLCAwLjEyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgR3Vhbm8sIEZsb3cgPSAwLjYiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChmLjYkdmVsLmZsb3dbZi42JEd1YW5vPT0iQWJzZW50Il0pKQ0KcGxvdChrZDIsIHhsaW0gPSBjKC03LDcpLCB5bGltID0gYygwLCAwLjA0KSwgY29sPSdyZWQnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBHdWFubywgRmxvdyA9IDAuNiIpDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMja2QxIDwtIGRlbnNpdHkobG9nMTAoZjMkdmVsLmZsb3dbZjMkR3Vhbm89PSJQcmVzZW50Il0pKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoLTcsNyksIHlsaW0gPSBjKDAsIDAuMTIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBHdWFubywgRmxvdyA9IDMiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChmMyR2ZWwuZmxvd1tmMyRHdWFubz09IkFic2VudCJdKSkNCnBsb3Qoa2QyLCB4bGltID0gYygtNyw3KSwgeWxpbSA9IGMoMCwgMC4wNCksIGNvbD0ncmVkJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgR3Vhbm8sIEZsb3cgPSAzIikNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMja2QxIDwtIGRlbnNpdHkobG9nMTAoZjUkdmVsLmZsb3dbZjUkR3Vhbm89PSJQcmVzZW50Il0pKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoLTcsNyksIHlsaW0gPSBjKDAsIDAuMTIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBHdWFubywgRmxvdyA9IDUuOSIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKGY1JHZlbC5mbG93W2Y1JEd1YW5vPT0iQWJzZW50Il0pKQ0KcGxvdChrZDIsIHhsaW0gPSBjKC03LDcpLCB5bGltID0gYygwLCAwLjA0KSwgY29sPSdyZWQnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBHdWFubywgRmxvdyA9IDUuOSIpDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCiMja2QxIDwtIGRlbnNpdHkobG9nMTAoZjgkdmVsLmZsb3dbZjgkR3Vhbm89PSJQcmVzZW50Il0pKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoLTEwMCwxMDApLCB5bGltID0gYygwLCAwLjA0KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgR3Vhbm8sIEZsb3cgPSA4LjkiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChmOCR2ZWwuZmxvd1tmOCRHdWFubz09IkFic2VudCJdKSkNCnBsb3Qoa2QyLCB4bGltID0gYygtNyw3KSwgeWxpbSA9IGMoMCwgMC4wNCksIGNvbD0ncmVkJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgR3Vhbm8sIEZsb3cgPSA4LjkiKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmBgYA0KDQpGb3IgZWFjaCBsZXZlbCBvZiBDaGxvcm9waHlsbCAodmVsb2NpdHkpDQoNCmBgYHtyfQ0KDQojIyMgS2VybmVsIGRlbnNpdHkgcGxvdHMgIyMjIyMjIyMjIyMjIyMjIyMjIyB2ZWxvY2l0eQ0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMykpDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEZsb3cgUmF0ZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKENobEEwJHZlbC5mbG93W0NobEEwJEZsb3cucmF0ZT09IjAiXSkpDQpwbG90KGtkMSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDAiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChDaGxBMCR2ZWwuZmxvd1tDaGxBMCRGbG93LnJhdGU9PSIwLjYiXSkpDQpsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShsb2cxMChDaGxBMCR2ZWwuZmxvd1tDaGxBMCRGbG93LnJhdGU9PSIzIl0pKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShsb2cxMChDaGxBMCR2ZWwuZmxvd1tDaGxBMCRGbG93LnJhdGU9PSI1LjkiXSkpDQpsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGxvZzEwKENobEEwJHZlbC5mbG93W0NobEEwJEZsb3cucmF0ZT09IjguOSJdKSkNCmxpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBNC4zJHZlbC5mbG93W0NobEE0LjMkRmxvdy5yYXRlPT0iMCJdKSkNCnBsb3Qoa2QxLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNC4zIikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuMyR2ZWwuZmxvd1tDaGxBNC4zJEZsb3cucmF0ZT09IjAuNiJdKSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGxvZzEwKENobEE0LjMkdmVsLmZsb3dbQ2hsQTQuMyRGbG93LnJhdGU9PSIzIl0pKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShsb2cxMChDaGxBNC4zJHZlbC5mbG93W0NobEE0LjMkRmxvdy5yYXRlPT0iNS45Il0pKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsb2cxMChDaGxBNC4zJHZlbC5mbG93W0NobEE0LjMkRmxvdy5yYXRlPT0iOC45Il0pKQ0KbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuNiR2ZWwuZmxvd1tDaGxBNC42JEZsb3cucmF0ZT09IjAiXSkpDQpwbG90KGtkMSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDQuNiIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKENobEE0LjYkdmVsLmZsb3dbQ2hsQTQuNiRGbG93LnJhdGU9PSIwLjYiXSkpDQpsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShsb2cxMChDaGxBNC42JHZlbC5mbG93W0NobEE0LjYkRmxvdy5yYXRlPT0iMyJdKSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuNiR2ZWwuZmxvd1tDaGxBNC42JEZsb3cucmF0ZT09IjUuOSJdKSkNCmxpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuNiR2ZWwuZmxvd1tDaGxBNC42JEZsb3cucmF0ZT09IjguOSJdKSkNCmxpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKENobEE1LjUkdmVsLmZsb3dbQ2hsQTUuNSRGbG93LnJhdGU9PSIwIl0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA1LjUiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChDaGxBNS41JHZlbC5mbG93W0NobEE1LjUkRmxvdy5yYXRlPT0iMC42Il0pKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQ1LjUkdmVsLmZsb3dbQ2hsQTUuNSRGbG93LnJhdGU9PSIzIl0pKQ0KbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQprZDQgPC0gZGVuc2l0eShsb2cxMChDaGw1LjUkdmVsLmZsb3dbQ2hsQTUuNSRGbG93LnJhdGU9PSI1LjkiXSkpDQpsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGxvZzEwKENobEE1LjUkdmVsLmZsb3dbQ2hsQTUuNSRGbG93LnJhdGU9PSI4LjkiXSkpDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBNiR2ZWwuZmxvd1tDaGxBNiRGbG93LnJhdGU9PSIwIl0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA2IikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTYkdmVsLmZsb3dbQ2hsQTYkRmxvdy5yYXRlPT0iMC42Il0pKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTYkdmVsLmZsb3dbQ2hsQTYkRmxvdy5yYXRlPT0iMyJdKSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTYkdmVsLmZsb3dbQ2hsQTYkRmxvdy5yYXRlPT0iNS45Il0pKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsb2cxMChDaGxBNiR2ZWwuZmxvd1tDaGxBNiRGbG93LnJhdGU9PSI4LjkiXSkpDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBNyR2ZWwuZmxvd1tDaGxBNyRGbG93LnJhdGU9PSIwIl0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA3IikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTckdmVsLmZsb3dbQ2hsQTckRmxvdy5yYXRlPT0iMC42Il0pKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTckdmVsLmZsb3dbQ2hsQTckRmxvdy5yYXRlPT0iMyJdKSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTckdmVsLmZsb3dbQ2hsQTckRmxvdy5yYXRlPT0iNS45Il0pKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsb2cxMChDaGxBNyR2ZWwuZmxvd1tDaGxBNyRGbG93LnJhdGU9PSI4LjkiXSkpDQpsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBMTMkdmVsLmZsb3dbQ2hsQTEzJEZsb3cucmF0ZT09IjAiXSkpDQpwbG90KGtkMSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDEzIikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTEzJHZlbC5mbG93W0NobEExMyRGbG93LnJhdGU9PSIwLjYiXSkpDQpsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShsb2cxMChDaGxBMTMkdmVsLmZsb3dbQ2hsQTEzJEZsb3cucmF0ZT09IjMiXSkpDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCmtkNCA8LSBkZW5zaXR5KGxvZzEwKENobEExMyR2ZWwuZmxvd1tDaGxBMTMkRmxvdy5yYXRlPT0iNS45Il0pKQ0KbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShsb2cxMChDaGxBMTMkdmVsLmZsb3dbQ2hsQTEzJEZsb3cucmF0ZT09IjguOSJdKSkNCmxpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKENobEExOSR2ZWwuZmxvd1tDaGxBMTkkRmxvdy5yYXRlPT0iMCJdKSkNCnBsb3Qoa2QxLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gMTkiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChDaGxBMTkkdmVsLmZsb3dbQ2hsQTE5JEZsb3cucmF0ZT09IjAuNiJdKSkNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGxvZzEwKENobEExOSR2ZWwuZmxvd1tDaGxBMTkkRmxvdy5yYXRlPT0iMyJdKSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkobG9nMTAoQ2hsQTE5JHZlbC5mbG93W0NobEExOSRGbG93LnJhdGU9PSI1LjkiXSkpDQpsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCmtkNSA8LSBkZW5zaXR5KGxvZzEwKENobEExOSR2ZWwuZmxvd1tDaGxBMTkkRmxvdy5yYXRlPT0iOC45Il0pKQ0KbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgTGlnaHQgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywzKSkNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTAkdmVsLmZsb3dbQ2hsQTAkTGlnaHQ9PSJQcmVzZW50Il0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDAiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChDaGxBMCR2ZWwuZmxvd1tDaGxBMCRMaWdodD09IkFic2VudCJdKSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuMyR2ZWwuZmxvd1tDaGxBNC4zJExpZ2h0PT0iUHJlc2VudCJdKSkNCnBsb3Qoa2QxLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJWZWxvY2l0eSAobG9nZ2VkLCBpbiByZWxhdGlvbiB0byBmbG93KSBWcyBMaWdodCwgQ2hsb3JvcGh5bGwgPSA0LjMiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChDaGxBNC4zJHZlbC5mbG93W0NobEE0LjMkTGlnaHQ9PSJBYnNlbnQiXSkpDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKENobEE0LjYkdmVsLmZsb3dbQ2hsQTQuNiRMaWdodD09IlByZXNlbnQiXSkpDQpwbG90KGtkMSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gNC42IikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTQuNiR2ZWwuZmxvd1tDaGxBNC42JExpZ2h0PT0iQWJzZW50Il0pKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBNS41JHZlbC5mbG93W0NobEE1LjUkTGlnaHQ9PSJQcmVzZW50Il0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDUuNSIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKENobEE1LjUkdmVsLmZsb3dbQ2hsQTUuNSRMaWdodD09IkFic2VudCJdKSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBNiR2ZWwuZmxvd1tDaGxBNiRMaWdodD09IlByZXNlbnQiXSkpDQpwbG90KGtkMSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gNiIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKENobEE2JHZlbC5mbG93W0NobEE2JExpZ2h0PT0iQWJzZW50Il0pKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShsb2cxMChDaGxBNyR2ZWwuZmxvd1tDaGxBNyRMaWdodD09IlByZXNlbnQiXSkpDQpwbG90KGtkMSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gNyIpDQoNCmtkMiA8LSBkZW5zaXR5KGxvZzEwKENobEE3JHZlbC5mbG93W0NobEE3JExpZ2h0PT0iQWJzZW50Il0pKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCmtkMSA8LSBkZW5zaXR5KGxvZzEwKENobEExMyR2ZWwuZmxvd1tDaGxBMTMkTGlnaHQ9PSJQcmVzZW50Il0pKQ0KcGxvdChrZDEsIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIlZlbG9jaXR5IChsb2dnZWQsIGluIHJlbGF0aW9uIHRvIGZsb3cpIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDEzIikNCg0Ka2QyIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTEzJHZlbC5mbG93W0NobEExMyRMaWdodD09IkFic2VudCJdKSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0Ka2QxIDwtIGRlbnNpdHkobG9nMTAoQ2hsQTE5JHZlbC5mbG93W0NobEExOSRMaWdodD09IlByZXNlbnQiXSkpDQpwbG90KGtkMSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiVmVsb2NpdHkgKGxvZ2dlZCwgaW4gcmVsYXRpb24gdG8gZmxvdykgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gMTkiKQ0KDQprZDIgPC0gZGVuc2l0eShsb2cxMChDaGxBMTkkdmVsLmZsb3dbQ2hsQTE5JExpZ2h0PT0iQWJzZW50Il0pKQ0KbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQpyYW5nZShDQy5Ub3RhbERhdGEkdHVybi5hbmdsZSkNCmBgYA0KDQpOb3cgZm9yIGVhY2ggbGV2ZWwgb2YgRmxvdyAoZm9yIGhlYWRpbmdzKQ0KDQpgYGB7cn0NCg0KIyMjIEtlcm5lbCBkZW5zaXR5IHBsb3RzICMjIyMjIyMjIyMjIyMjIyMjIyMgSGVhZGluZ3MNCnBhcihtYXI9IGMoNCw0LDIsMSkpDQpwYXIobWZyb3c9YygzLDIpKQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBDaGxvcm9waHlsbCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmxldmVscyhDQy5Ub3RhbERhdGEkQ2hsb3JvcGh5bGwpDQoNCmtkMSA8LSBkZW5zaXR5KGYwJGhlYWRpbmcucGlbZjAkQ2hsb3JvcGh5bGw9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgQ2hsb3JvcGh5bGwsIEZsb3cgPSAwIikNCg0KIyNrZDIgPC0gZGVuc2l0eShmMCRoZWFkaW5nLnBpW2YwJENobG9yb3BoeWxsPT0iNC4zIl0pDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCmtkMyA8LSBkZW5zaXR5KGYwJGhlYWRpbmcucGlbZjAkQ2hsb3JvcGh5bGw9PSI0LjYiXSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q4IDwtIGRlbnNpdHkoZjAkaGVhZGluZy5waVtmMCRDaGxvcm9waHlsbD09IjUuNSJdKQ0KbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KGYwJGhlYWRpbmcucGlbZjAkQ2hsb3JvcGh5bGw9PSI2LjEiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQprZDUgPC0gZGVuc2l0eShmMCRoZWFkaW5nLnBpW2YwJENobG9yb3BoeWxsPT0iNy42Il0pDQpsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0KIyNrZDYgPC0gZGVuc2l0eShmMCRoZWFkaW5nLnBpW2YwJENobG9yb3BoeWxsPT0iMTMuNSJdKQ0KIyNsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCmtkNyA8LSBkZW5zaXR5KGYwJGhlYWRpbmcucGlbZjAkQ2hsb3JvcGh5bGw9PSIxOSJdKQ0KbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsIA0KICAgICAgICAgICAgICAgICAgIkNobG9yb3BoeWxsIDcuNiIsICJDaGxvcm9waHlsbCAxMy41IiwgJ0NobG9yb3BoeWxsIDE5JyksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiwgImRhcmsgcmVkIiwgInB1cnBsZSIsICJibGFjayIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShmLjYkaGVhZGluZy5waVtmLjYkQ2hsb3JvcGh5bGw9PSIwIl0pDQpwbG90KGtkMSx4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBDaGxvcm9waHlsbCwgRmxvdyA9IDAuNiIpDQoNCmtkMiA8LSBkZW5zaXR5KGYuNiRoZWFkaW5nLnBpW2YuNiRDaGxvcm9waHlsbD09IjQuMyJdKQ0KbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0Ka2QzIDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JENobG9yb3BoeWxsPT0iNC42Il0pDQpsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q4IDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JENobG9yb3BoeWxsPT0iNS41Il0pDQojI2xpbmVzKGtkOCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JENobG9yb3BoeWxsPT0iNi4xIl0pDQpsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JENobG9yb3BoeWxsPT0iNy42Il0pDQojI2xpbmVzKGtkNSwgY29sPSdkYXJrIHJlZCcsIGx3ZD0yKQ0KDQprZDYgPC0gZGVuc2l0eShmLjYkaGVhZGluZy5waVtmLjYkQ2hsb3JvcGh5bGw9PSIxMy41Il0pDQpsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCiMja2Q3IDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JENobG9yb3BoeWxsPT0iMTkiXSkNCiMjbGluZXMoa2Q3LCBjb2w9J2JsYWNrJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkNobG9yb3BoeWxsICAwIiwgIkNobG9yb3BoeWxsIDQuMyIsICJDaGxvcm9waHlsbCA0LjYiLCAiQ2hsb3JvcGh5bGwgNS41IiwgIkNobG9yb3BoeWxsIDYuMSIsIA0KICAgICAgICAgICAgICAgICAgIkNobG9yb3BoeWxsIDcuNiIsICJDaGxvcm9waHlsbCAxMy41IiwgJ0NobG9yb3BoeWxsIDE5JyksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiwgImRhcmsgcmVkIiwgInB1cnBsZSIsICJibGFjayIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZjMkaGVhZGluZy5waVtmMyRDaGxvcm9waHlsbD09IjAiXSkNCnBsb3Qoa2QxLHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIENobG9yb3BoeWxsLCBGbG93ID0gMyIpDQoNCiMja2QyIDwtIGRlbnNpdHkoZjMkaGVhZGluZy5waVtmMyRDaGxvcm9waHlsbD09IjQuMyJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KGYzJGhlYWRpbmcucGlbZjMkQ2hsb3JvcGh5bGw9PSI0LjYiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkOCA8LSBkZW5zaXR5KGYzJGhlYWRpbmcucGlbZjMkQ2hsb3JvcGh5bGw9PSI1LjUiXSkNCiMjbGluZXMoa2Q4LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KGYzJGhlYWRpbmcucGlbZjMkQ2hsb3JvcGh5bGw9PSI2LjEiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KGYzJGhlYWRpbmcucGlbZjMkQ2hsb3JvcGh5bGw9PSI3LjYiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J2RhcmsgcmVkJywgbHdkPTIpDQoNCiMja2Q2IDwtIGRlbnNpdHkoZjMkaGVhZGluZy5waVtmMyRDaGxvcm9waHlsbD09IjEzLjUiXSkNCiMjbGluZXMoa2Q2LCBjb2w9J3B1cnBsZScsIGx3ZD0yKQ0KDQojI2tkNyA8LSBkZW5zaXR5KGYzJGhlYWRpbmcucGlbZjMkQ2hsb3JvcGh5bGw9PSIxOSJdKQ0KIyNsaW5lcyhrZDcsIGNvbD0nYmxhY2snLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiQ2hsb3JvcGh5bGwgIDAiLCAiQ2hsb3JvcGh5bGwgNC4zIiwgIkNobG9yb3BoeWxsIDQuNiIsICJDaGxyb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRDaGxvcm9waHlsbD09IjAiXSkNCnBsb3Qoa2QxLHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIENobG9yb3BoeWxsLCBGbG93ID0gNS45IikNCg0KIyNrZDIgPC0gZGVuc2l0eShmNSRoZWFkaW5nLnBpW2Y1JENobG9yb3BoeWxsPT0iNC4zIl0pDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRDaGxvcm9waHlsbD09IjQuNiJdKQ0KIyNsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q4IDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRDaGxvcm9waHlsbD09IjUuNSJdKQ0KIyNsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRDaGxvcm9waHlsbD09IjYuMSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRDaGxvcm9waHlsbD09IjcuNiJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0KIyNrZDYgPC0gZGVuc2l0eShmNSRoZWFkaW5nLnBpW2Y1JENobG9yb3BoeWxsPT0iMTMuNSJdKQ0KIyNsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCiMja2Q3IDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRDaGxvcm9waHlsbD09IjE5Il0pDQojI2xpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQprZDEgPC0gZGVuc2l0eShmOCRoZWFkaW5nLnBpW2Y4JENobG9yb3BoeWxsPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIENobG9yb3BoeWxsLCBGbG93ID0gOC45IikNCg0KIyNrZDIgPC0gZGVuc2l0eShmOCRoZWFkaW5nLnBpW2Y4JENobG9yb3BoeWxsPT0iNC4zIl0pDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRDaGxvcm9waHlsbD09IjQuNiJdKQ0KIyNsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q4IDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRDaGxvcm9waHlsbD09IjUuNSJdKQ0KIyNsaW5lcyhrZDgsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRDaGxvcm9waHlsbD09IjYuMSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0ncmVkJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRDaGxvcm9waHlsbD09IjcuNiJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0nZGFyayByZWQnLCBsd2Q9MikNCg0KIyNrZDYgPC0gZGVuc2l0eShmOCRoZWFkaW5nLnBpW2Y4JENobG9yb3BoeWxsPT0iMTMuNSJdKQ0KIyNsaW5lcyhrZDYsIGNvbD0ncHVycGxlJywgbHdkPTIpDQoNCiMja2Q3IDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRDaGxvcm9waHlsbD09IjE5Il0pDQojI2xpbmVzKGtkNywgY29sPSdibGFjaycsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJDaGxvcm9waHlsbCAgMCIsICJDaGxvcm9waHlsbCA0LjMiLCAiQ2hsb3JvcGh5bGwgNC42IiwgIkNobG9yb3BoeWxsIDUuNSIsICJDaGxvcm9waHlsbCA2LjEiLCANCiAgICAgICAgICAgICAgICAgICJDaGxvcm9waHlsbCA3LjYiLCAiQ2hsb3JvcGh5bGwgMTMuNSIsICdDaGxvcm9waHlsbCAxOScpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIsICJkYXJrIHJlZCIsICJwdXJwbGUiLCAiYmxhY2siKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgR3Vhbm8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCnBhcihtYXI9IGMoNCw0LDIsMSkpDQpwYXIobWZyb3c9YygzLDIpKQ0KbGV2ZWxzKENDLlRvdGFsRGF0YSRHdWFubykNCg0Ka2QxIDwtIGRlbnNpdHkoZjAkaGVhZGluZy5waVtmMCRHdWFubz09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDEpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBHdWFubywgRmxvdyA9IDAiKQ0KDQprZDIgPC0gZGVuc2l0eShmMCRoZWFkaW5nLnBpW2YwJEd1YW5vPT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JEd1YW5vPT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIEd1YW5vLCBGbG93ID0gMC42IikNCg0Ka2QyIDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JEd1YW5vPT0iQWJzZW50Il0pDQojI3Bsb3Qoa2QyLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDMpLCBjb2w9J3JlZCcsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIEd1YW5vLCBGbG93ID0gMC42IikNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShmMyRoZWFkaW5nLnBpW2YzJEd1YW5vPT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIEd1YW5vLCBGbG93ID0gMyIpDQoNCmtkMiA8LSBkZW5zaXR5KGYzJGhlYWRpbmcucGlbZjMkR3Vhbm89PSJBYnNlbnQiXSkNCiMjcGxvdChrZDIsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0ncmVkJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgR3Vhbm8sIEZsb3cgPSAzIikNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJHdWFubyBQcmVzZW50IiwgIkd1YW5vIEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCiMja2QxIDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRHdWFubz09IlByZXNlbnQiXSkNCiMjcGxvdChrZDEsIHhsaW0gPSBjKDUsMTc1KSwgeWxpbSA9IGMoMCwgMC4wMyksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIEd1YW5vLCBGbG93ID0gNS45IikNCg0Ka2QyIDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRHdWFubz09IkFic2VudCJdKQ0KcGxvdChrZDIsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMSksIGNvbD0ncmVkJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgR3Vhbm8sIEZsb3cgPSA1LjkiKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkd1YW5vIFByZXNlbnQiLCAiR3Vhbm8gQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0KIyNrZDEgPC0gZGVuc2l0eShmOCRoZWFkaW5nLnBpW2Y4JEd1YW5vPT0iUHJlc2VudCJdKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAzKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgR3Vhbm8sIEZsb3cgPSA4LjkiKQ0KDQprZDIgPC0gZGVuc2l0eShmOCRoZWFkaW5nLnBpW2Y4JEd1YW5vPT0iQWJzZW50Il0pDQpwbG90KGtkMiwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxKSwgY29sPSdyZWQnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBHdWFubywgRmxvdyA9IDguOSIpDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiR3Vhbm8gUHJlc2VudCIsICJHdWFubyBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBMaWdodCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywyKSkNCmxldmVscyhDQy5Ub3RhbERhdGEkTGlnaHQpDQoNCmtkMSA8LSBkZW5zaXR5KGYwJGhlYWRpbmcucGlbZjAkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIExpZ2h0LCBGbG93ID0gMCIpDQoNCmtkMiA8LSBkZW5zaXR5KGYwJGhlYWRpbmcucGlbZjAkTGlnaHQ9PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShmLjYkaGVhZGluZy5waVtmLjYkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxNSksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIExpZ2h0LCBGbG93ID0gMC42IikNCg0Ka2QyIDwtIGRlbnNpdHkoZi42JGhlYWRpbmcucGlbZi42JExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZjMkaGVhZGluZy5waVtmMyRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDE1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgTGlnaHQsIEZsb3cgPSAzIikNCg0KIyNrZDIgPC0gZGVuc2l0eShmMyRoZWFkaW5nLnBpW2YzJExpZ2h0PT0iQWJzZW50Il0pDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShmNSRoZWFkaW5nLnBpW2Y1JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMTUpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBMaWdodCwgRmxvdyA9IDUuOSIpDQoNCiMja2QyIDwtIGRlbnNpdHkoZjUkaGVhZGluZy5waVtmNSRMaWdodD09IkFic2VudCJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoZjgkaGVhZGluZy5waVtmOCRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDE1KSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgTGlnaHQsIEZsb3cgPSA4LjkiKQ0KDQprZDIgPC0gZGVuc2l0eShmOCRoZWFkaW5nLnBpW2Y4JExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmBgYA0KDQpOb3cgZm9yIGVhY2ggbGV2ZWwgb2YgQ2hsb3JvcGh5bGwgKGZvciBoZWFkaW5ncykNCg0KYGBge3J9DQoNCiMjIyBLZXJuZWwgZGVuc2l0eSBwbG90cyAjIyMjIyMjIyMjIyMjIyMjIyMjIEhlYWRpbmdzDQpwYXIobWFyPSBjKDQsNCwyLDEpKQ0KcGFyKG1mcm93PWMoMywzKSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRmxvdyBSYXRlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbGV2ZWxzKENDLlRvdGFsRGF0YSRGbG93LnJhdGUpDQoNCnBhcihtYXI9IGMoNCw0LDIsMSkpDQpwYXIobWZyb3c9YygzLDMpKQ0KDQprZDEgPC0gZGVuc2l0eShDaGxBMCRoZWFkaW5nLnBpW0NobEEwJEZsb3cucmF0ZT09IjAiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDEyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZyBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gMCIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEEwJGhlYWRpbmcucGlbQ2hsQTAkRmxvdy5yYXRlPT0iMC42Il0pDQpsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQprZDMgPC0gZGVuc2l0eShDaGxBMCRoZWFkaW5nLnBpW0NobEEwJEZsb3cucmF0ZT09IjMiXSkNCmxpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0Ka2Q0IDwtIGRlbnNpdHkoQ2hsQTAkaGVhZGluZy5waVtDaGxBMCRGbG93LnJhdGU9PSI1LjkiXSkNCmxpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0Ka2Q1IDwtIGRlbnNpdHkoQ2hsQTAkaGVhZGluZy5waVtDaGxBMCRGbG93LnJhdGU9PSI4LjkiXSkNCmxpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCg0KIyNrZDEgPC0gZGVuc2l0eShDaGxBNC4zJGhlYWRpbmcucGlbQ2hsQTQuMyRGbG93LnJhdGU9PSIwIl0pDQojI3Bsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA0LjMiKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBNC4zJGhlYWRpbmcucGlbQ2hsQTQuMyRGbG93LnJhdGU9PSIwLjYiXSkNCnBsb3Qoa2QyLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDEyKSwgY29sPSdsaWdodCBibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZyBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNC4zIikNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBNC4zJGhlYWRpbmcucGlbQ2hsQTQuMyRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNC4zJGhlYWRpbmcucGlbQ2hsQTQuMyRGbG93LnJhdGU9PSI1LjkiXSkNCiMjbGluZXMoa2Q0LCBjb2w9J29yYW5nZScsIGx3ZD0yKQ0KDQojI2tkNSA8LSBkZW5zaXR5KENobEE0LjMkaGVhZGluZy5waVtDaGxBNC4zJEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNC42JGhlYWRpbmcucGlbQ2hsQTQuNiRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDQuNiIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEE0LjYkaGVhZGluZy5waVtDaGxBNC42JEZsb3cucmF0ZT09IjAuNiJdKQ0KIyNwbG90KGtkMiwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdsaWdodCBibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZyBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNC42IikNCmxpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoQ2hsQTQuNiRoZWFkaW5nLnBpW0NobEE0LjYkRmxvdy5yYXRlPT0iMyJdKQ0KIyNsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkoQ2hsQTQuNiRoZWFkaW5nLnBpW0NobEE0LjYkRmxvdy5yYXRlPT0iNS45Il0pDQojI2xpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShDaGxBNC42JGhlYWRpbmcucGlbQ2hsQTQuNiRGbG93LnJhdGU9PSI4LjkiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTUuNSRoZWFkaW5nLnBpW0NobEE1LjUkRmxvdy5yYXRlPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMTIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA1LjUiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KENobEE1LjUkaGVhZGluZy5waVtDaGxBNS41JEZsb3cucmF0ZT09IjAuNiJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KENobEE1LjUkaGVhZGluZy5waVtDaGxBNS41JEZsb3cucmF0ZT09IjMiXSkNCiMjbGluZXMoa2QzLCBjb2w9J3llbGxvdycsIGx3ZD0yKQ0KDQojI2tkNCA8LSBkZW5zaXR5KENobEE1LjUkaGVhZGluZy5waVtDaGxBNS41JEZsb3cucmF0ZT09IjUuOSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoQ2hsQTUuNSRoZWFkaW5nLnBpW0NobEE1LjUkRmxvdy5yYXRlPT0iOC45Il0pDQojI2xpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQoNCiMja2QxIDwtIGRlbnNpdHkoQ2hsQTYkaGVhZGluZy5waVtDaGxBNiRGbG93LnJhdGU9PSIwIl0pDQojI3Bsb3Qoa2QxLCB4bGltID0gYyg1LDE3NSksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSA2IikNCg0Ka2QyIDwtIGRlbnNpdHkoQ2hsQTYkaGVhZGluZy5waVtDaGxBNiRGbG93LnJhdGU9PSIwLjYiXSkNCnBsb3Qoa2QyLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDEyKSwgY29sPSdsaWdodCBibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZyBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gNiIpDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoQ2hsQTYkaGVhZGluZy5waVtDaGxBNiRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNiRoZWFkaW5nLnBpW0NobEE2JEZsb3cucmF0ZT09IjUuOSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoQ2hsQTYkaGVhZGluZy5waVtDaGxBNiRGbG93LnJhdGU9PSI4LjkiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTckaGVhZGluZy5waVtDaGxBNyRGbG93LnJhdGU9PSIwIl0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDciKQ0KDQojI2tkMiA8LSBkZW5zaXR5KENobEE3JGhlYWRpbmcucGlbQ2hsQTckRmxvdy5yYXRlPT0iMC42Il0pDQojI2xpbmVzKGtkMiwgY29sPSdsaWdodCBibHVlJywgbHdkPTIpDQoNCiMja2QzIDwtIGRlbnNpdHkoQ2hsQTckaGVhZGluZy5waVtDaGxBNyRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBNyRoZWFkaW5nLnBpW0NobEE3JEZsb3cucmF0ZT09IjUuOSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoQ2hsQTckaGVhZGluZy5waVtDaGxBNyRGbG93LnJhdGU9PSI4LjkiXSkNCiMjbGluZXMoa2Q1LCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJGbG93IHJhdGUgIDAiLCAiRmxvdyByYXRlIDAuNiIsICJGbG93IHJhdGUgMyIsICJGbG93IHJhdGUgNS45IiwgIkZsb3cgcmF0ZSA4LjkiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgImxpZ2h0IGJsdWUiLCAieWVsbG93IiwgIm9yYW5nZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0KIyNrZDEgPC0gZGVuc2l0eShDaGxBMTMkaGVhZGluZy5waVtDaGxBMTMkRmxvdy5yYXRlPT0iMCJdKQ0KIyNwbG90KGtkMSwgeGxpbSA9IGMoNSwxNzUpLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZyBWcyBGbG93IFJhdGUsIENobG9yb3BoeWxsID0gMTMiKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBMTMkaGVhZGluZy5waVtDaGxBMTMkRmxvdy5yYXRlPT0iMC42Il0pDQpwbG90KGtkMiwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAxMiksIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmcgVnMgRmxvdyBSYXRlLCBDaGxvcm9waHlsbCA9IDEzIikNCiMjbGluZXMoa2QyLCBjb2w9J2xpZ2h0IGJsdWUnLCBsd2Q9MikNCg0KIyNrZDMgPC0gZGVuc2l0eShDaGxBMTMkaGVhZGluZy5waVtDaGxBMTMkRmxvdy5yYXRlPT0iMyJdKQ0KIyNsaW5lcyhrZDMsIGNvbD0neWVsbG93JywgbHdkPTIpDQoNCiMja2Q0IDwtIGRlbnNpdHkoQ2hsQTEzJGhlYWRpbmcucGlbQ2hsQTEzJEZsb3cucmF0ZT09IjUuOSJdKQ0KIyNsaW5lcyhrZDQsIGNvbD0nb3JhbmdlJywgbHdkPTIpDQoNCiMja2Q1IDwtIGRlbnNpdHkoQ2hsQTEzJGhlYWRpbmcucGlbQ2hsQTEzJEZsb3cucmF0ZT09IjguOSJdKQ0KIyNsaW5lcyhrZDUsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkZsb3cgcmF0ZSAgMCIsICJGbG93IHJhdGUgMC42IiwgIkZsb3cgcmF0ZSAzIiwgIkZsb3cgcmF0ZSA1LjkiLCAiRmxvdyByYXRlIDguOSIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAibGlnaHQgYmx1ZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBMTkkaGVhZGluZy5waVtDaGxBMTkkRmxvdy5yYXRlPT0iMCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMTIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5nIFZzIEZsb3cgUmF0ZSwgQ2hsb3JvcGh5bGwgPSAxOSIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTE5JGhlYWRpbmcucGlbQ2hsQTE5JEZsb3cucmF0ZT09IjAuNiJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0nbGlnaHQgYmx1ZScsIGx3ZD0yKQ0KDQojI2tkMyA8LSBkZW5zaXR5KENobEExOSRoZWFkaW5nLnBpW0NobEExOSRGbG93LnJhdGU9PSIzIl0pDQojI2xpbmVzKGtkMywgY29sPSd5ZWxsb3cnLCBsd2Q9MikNCg0KIyNrZDQgPC0gZGVuc2l0eShDaGxBMTkkaGVhZGluZy5waVtDaGxBMTkkRmxvdy5yYXRlPT0iNS45Il0pDQojI2xpbmVzKGtkNCwgY29sPSdvcmFuZ2UnLCBsd2Q9MikNCg0KIyNrZDUgPC0gZGVuc2l0eShDaGxBMTkkaGVhZGluZy5waVtDaGxBMTkkRmxvdy5yYXRlPT0iOC45Il0pDQojI2xpbmVzKGtkNSwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiRmxvdyByYXRlICAwIiwgIkZsb3cgcmF0ZSAwLjYiLCAiRmxvdyByYXRlIDMiLCAiRmxvdyByYXRlIDUuOSIsICJGbG93IHJhdGUgOC45IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJsaWdodCBibHVlIiwgInllbGxvdyIsICJvcmFuZ2UiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIExpZ2h0ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDMsMykpDQoNCmtkMSA8LSBkZW5zaXR5KENobEEwJGhlYWRpbmcucGlbQ2hsQTAkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gMCIpDQoNCmtkMiA8LSBkZW5zaXR5KENobEEwJGhlYWRpbmcucGlbQ2hsQTAkTGlnaHQ9PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTQuMyRoZWFkaW5nLnBpW0NobEE0LjMkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gNC4zIikNCg0KIyNrZDIgPC0gZGVuc2l0eShDaGxBNC4zJGhlYWRpbmcucGlbQ2hsQTQuMyRMaWdodD09IkFic2VudCJdKQ0KIyNsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCmtkMSA8LSBkZW5zaXR5KENobEE0LjYkaGVhZGluZy5waVtDaGxBNC42JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDQuNiIpDQoNCiMja2QyIDwtIGRlbnNpdHkoQ2hsQTQuNiRoZWFkaW5nLnBpW0NobEE0LjYkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNS41JGhlYWRpbmcucGlbQ2hsQTUuNSRMaWdodD09IlByZXNlbnQiXSkNCnBsb3Qoa2QxLCB4bGltID0gYygtMTgwLDE4MCksIHlsaW0gPSBjKDAsIDAuMDIpLCBjb2w9J2JsdWUnLCBsd2Q9MiwgbWFpbiA9ICJIZWFkaW5ncyBWcyBMaWdodCwgQ2hsb3JvcGh5bGwgPSA1LjUiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KENobEE1LjUkaGVhZGluZy5waVtDaGxBNS41JExpZ2h0PT0iQWJzZW50Il0pDQojI2xpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNiRoZWFkaW5nLnBpW0NobEE2JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDYiKQ0KDQojI2tkMiA8LSBkZW5zaXR5KENobEE2JGhlYWRpbmcucGlbQ2hsQTYkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBNyRoZWFkaW5nLnBpW0NobEE3JExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDciKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBNyRoZWFkaW5nLnBpW0NobEE3JExpZ2h0PT0iQWJzZW50Il0pDQpsaW5lcyhrZDIsIGNvbD0ncmVkJywgbHdkPTIpDQoNCmxlZ2VuZCgidG9wcmlnaHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBsZWdlbmQgdG8gZGVuc2l0eQ0KICAgICAgIGxlZ2VuZCA9IGMoIkxpZ2h0IFByZXNlbnQiLCAiTGlnaHQgQWJzZW50IiksDQogICAgICAgY29sID0gYygiYmx1ZSIsICJyZWQiKSwNCiAgICAgICBsdHkgPSAxKQ0KDQoNCg0Ka2QxIDwtIGRlbnNpdHkoQ2hsQTEzJGhlYWRpbmcucGlbQ2hsQTEzJExpZ2h0PT0iUHJlc2VudCJdKQ0KcGxvdChrZDEsIHhsaW0gPSBjKC0xODAsMTgwKSwgeWxpbSA9IGMoMCwgMC4wMiksIGNvbD0nYmx1ZScsIGx3ZD0yLCBtYWluID0gIkhlYWRpbmdzIFZzIExpZ2h0LCBDaGxvcm9waHlsbCA9IDEzIikNCg0KIyNrZDIgPC0gZGVuc2l0eShDaGxBMTMkaGVhZGluZy5waVtDaGxBMTMkTGlnaHQ9PSJBYnNlbnQiXSkNCiMjbGluZXMoa2QyLCBjb2w9J3JlZCcsIGx3ZD0yKQ0KDQpsZWdlbmQoInRvcHJpZ2h0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgbGVnZW5kIHRvIGRlbnNpdHkNCiAgICAgICBsZWdlbmQgPSBjKCJMaWdodCBQcmVzZW50IiwgIkxpZ2h0IEFic2VudCIpLA0KICAgICAgIGNvbCA9IGMoImJsdWUiLCAicmVkIiksDQogICAgICAgbHR5ID0gMSkNCg0KDQprZDEgPC0gZGVuc2l0eShDaGxBMTkkaGVhZGluZy5waVtDaGxBMTkkTGlnaHQ9PSJQcmVzZW50Il0pDQpwbG90KGtkMSwgeGxpbSA9IGMoLTE4MCwxODApLCB5bGltID0gYygwLCAwLjAyKSwgY29sPSdibHVlJywgbHdkPTIsIG1haW4gPSAiSGVhZGluZ3MgVnMgTGlnaHQsIENobG9yb3BoeWxsID0gMTkiKQ0KDQprZDIgPC0gZGVuc2l0eShDaGxBMTkkaGVhZGluZy5waVtDaGxBMTkkTGlnaHQ9PSJBYnNlbnQiXSkNCmxpbmVzKGtkMiwgY29sPSdyZWQnLCBsd2Q9MikNCg0KbGVnZW5kKCJ0b3ByaWdodCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGxlZ2VuZCB0byBkZW5zaXR5DQogICAgICAgbGVnZW5kID0gYygiTGlnaHQgUHJlc2VudCIsICJMaWdodCBBYnNlbnQiKSwNCiAgICAgICBjb2wgPSBjKCJibHVlIiwgInJlZCIpLA0KICAgICAgIGx0eSA9IDEpDQoNCmBgYA0KDQo=